Я пытаюсь понять и поэкспериментировать с переходами представления swiftUI и могу немного понять, почему следующее не работает так, как я ожидаю:
struct ContentView: View {
@State private var showOverlay: Bool = false
var body: some View {
ZStack {
VStack {
Button(action: {
withAnimation(.easeInOut) {
self.showOverlay = true
}
}) {
Text("Hello, World!")
}
}
.zIndex(0)
.animation(nil)
.blur(radius: showOverlay ? 3 : 0)
if showOverlay {
HStack {
Button(action: {
withAnimation(.easeInOut) {
self.showOverlay = false
}
}) {
Text("Close")
}
.frame(width: 80, height: 80)
.background(Color.red)
.transition(.move(edge: .top))
Button(action: {
withAnimation(.easeInOut) {
self.showOverlay = false
}
}) {
Text("Close")
}
.frame(width: 80, height: 80)
.background(Color.red)
.transition(.move(edge: .bottom))
}
.zIndex(1.0)
}
}
}
Существует условный HStack из двух кнопок. Когда параметр @State showOverlay
изменяется, это делается в блоке withAnimation
. Переходы на отдельные кнопки не учитываются.
Если я удаляю HStack и помещаю zIndex (1) на каждую кнопку, происходит переход удаления, но не переход вставки.
Я хочу, чтобы обе кнопки переходили по назначению, когда их группа добавляется в представление.
Вопросы: Почему перенос в HStack приводит к игнорированию внутренних переходов? Почему краевой переход работает только в 1 направлении?