Не могу изменить Zindex из Element LazyVgrid, чтобы доставить его на фронт с анимациейIOS

Программируем под IOS
Ответить
Anonymous
 Не могу изменить Zindex из Element LazyVgrid, чтобы доставить его на фронт с анимацией

Сообщение 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()
}
}
}


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

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

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

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

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

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