Как стилизовать навигационную связь при нажатии?IOS

Программируем под IOS
Ответить
Anonymous
 Как стилизовать навигационную связь при нажатии?

Сообщение Anonymous »

Я новичок, и я пытался создать расширение приложения Safari в качестве своего первого проекта.
Я пытаюсь настроить внешний вид рядов навигационных связей внутри списка < /strong> при нажатии. более плавное. Я добавлю оба для контекста:

Код: Выделить всё

// HomeView snippet

var body: some View {
NavigationStack {
VStack(alignment: .leading, spacing: 8) {

HStack {
Text("Explore")
.font(.title2)

Spacer()

SortButton(isAscending: $isAscending) // Now properly updates sorting
}

SearchBar(text: $searchText)
.padding(.vertical, 2)

//below is the list with the NavigationLink
List(filteredFolders) { folder in
NavigationLink(destination: DummyFolderDetailView(folder: folder)) {
FolderRowView(folder: folder)
}
}
.clipShape(RoundedRectangle(cornerRadius: 8))
.navigationTitle("Folders")
}
}
}
< /code>
// Component FolderRowView

struct FolderRowView: View {
let folder: Folder
@State private var isHovering = false

var body: some View {
HStack {
// Folder Icon
Image(systemName: "folder.fill")
.resizable()
.scaledToFit()
.frame(width: 18, height: 18)
.foregroundStyle(.gray)

Spacer()

// Folder Name
Text(folder.name)
.font(.body)
.frame(maxWidth: .infinity, alignment: .leading)

// Chevron Icon
Image(systemName: "chevron.right")
.foregroundColor(.gray)
}
.padding(.vertical, 6)
.padding(.horizontal, 10) // Added horizontal padding for space around content
.background(isHovering ? Color.gray.opacity(0.1) : Color.clear) // Optional background change on hover
.scaleEffect(isHovering ? 1.05 : 1.0) // Zoom-in effect
.cornerRadius(8)
.animation(.easeInOut(duration: 0.2), value: isHovering) // Smooth animation
.onHover { hovering in
isHovering = hovering
}
.contextMenu { //(...)
< /code>
So as you can see i already successfully added on hover styling and animation to the rows by working inside the component file.
I realize that customizing the on press style is a bit more complicated than that!
[b]I tried:[/b]

[*].onTapGesture
с @state private var ispressed = false в файле компонентов, который правильно отображался в нажжении, но вмешался в навигационную линию , чтобы действие больше не было действием :)

[*] модификатор на навигационную связь as .buttonstyle (pressableStyle ()) , но на самом деле он ничего не сделал ..

Chatgpt предложил мне попробовать создать компонент Folderlink , который называет FolderRowView , гнездятся внутри, и наборы наборов, и наборы наборов, и наборы наборов, и наборы наборов. NavigationLink запускается кнопкой. Затем в Homeview мне пришлось только вызову, что в списке только вызов . Я попробовал это, но он имеет тот же результат, что и первый подход, где появляется новый стиль прессы, но щелчок не действует. Assets.xcassets accentcolor, но .foregroundstyle (color.accentcolor) называет темно -серый (тот, который по умолчанию показывает на прессе), и добавление модификаторов стиля в навигационную связь тоже не работает.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... en-pressed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»