У меня есть следующий пример представления без модификаций Zindex. В настоящее время, при выборе элемента сетки, он будет оживлять центр экрана. Тем не менее, это не изменяет Zindex, и элементы останутся ниже других. . < /p>
Самый близкий я добрался до исправления:
Добавление .id () выбранного элемента в LazyVgrid, с .zindex условно устанавливает его на геометрию. Хотя это правильно устанавливает иерархию, каждый раз, когда выбирается элемент, вся сетка мигает, и не существует анимирования элемента из позиции сетки в центр. < /P>
struct SwiftUIView: View {
let colors: [Color] = [.red, .blue, .green, .yellow, .purple, .orange]
let columns = [GridItem(.flexible()), GridItem(.flexible())]
@State private var selectedItem: Int? = nil
@State private var selectedItemPosition: CGRect? = nil
var body: some View {
GeometryReader { screenGeometry in
LazyVGrid(columns: columns, spacing: 20) {
ForEach(colors.indices, id: \.self) { index in
GeometryReader { geometry in
let isSelected = selectedItem == index
Rectangle()
.fill(colors[index])
.cornerRadius(12)
.frame(width: 150, height: 200)
.shadow(radius: isSelected ? 10 : 0)
.onTapGesture {
withAnimation(.spring(response: 0.5, dampingFraction: 0.7)) {
if isSelected {
selectedItem = nil
selectedItemPosition = nil
} else {
selectedItem = index
selectedItemPosition = geometry.frame(in: .global)
}
}
}
.offset(
x: isSelected ? (screenGeometry.size.width / 2 - geometry.frame(in: .global).midX) : 0,
y: isSelected ? (screenGeometry.size.height / 2 - geometry.frame(in: .global).midY) : 0
)
}
.frame(height: 200) // Needed to ensure GeometryReader does not shrink
}
}
.padding()
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -animation
Не могу изменить Zindex из Element LazyVgrid, чтобы доставить его на фронт с анимацией ⇐ IOS
Программируем под IOS
1739250243
Anonymous
У меня есть следующий пример представления без модификаций Zindex. В настоящее время, при выборе элемента сетки, он будет оживлять центр экрана. Тем не менее, это не изменяет Zindex, и элементы останутся ниже других. . < /p>
Самый близкий я добрался до исправления:
Добавление .id () выбранного элемента в LazyVgrid, с .zindex условно устанавливает его на геометрию. Хотя это правильно устанавливает иерархию, каждый раз, когда выбирается элемент, вся сетка мигает, и не существует анимирования элемента из позиции сетки в центр. < /P>
struct SwiftUIView: View {
let colors: [Color] = [.red, .blue, .green, .yellow, .purple, .orange]
let columns = [GridItem(.flexible()), GridItem(.flexible())]
@State private var selectedItem: Int? = nil
@State private var selectedItemPosition: CGRect? = nil
var body: some View {
GeometryReader { screenGeometry in
LazyVGrid(columns: columns, spacing: 20) {
ForEach(colors.indices, id: \.self) { index in
GeometryReader { geometry in
let isSelected = selectedItem == index
Rectangle()
.fill(colors[index])
.cornerRadius(12)
.frame(width: 150, height: 200)
.shadow(radius: isSelected ? 10 : 0)
.onTapGesture {
withAnimation(.spring(response: 0.5, dampingFraction: 0.7)) {
if isSelected {
selectedItem = nil
selectedItemPosition = nil
} else {
selectedItem = index
selectedItemPosition = geometry.frame(in: .global)
}
}
}
.offset(
x: isSelected ? (screenGeometry.size.width / 2 - geometry.frame(in: .global).midX) : 0,
y: isSelected ? (screenGeometry.size.height / 2 - geometry.frame(in: .global).midY) : 0
)
}
.frame(height: 200) // Needed to ensure GeometryReader does not shrink
}
}
.padding()
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79428920/cant-change-zindex-of-lazyvgrid-element-to-bring-it-to-the-front-with-animation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия