Я хотел бы создать представление в SwiftUI, которое добавляет подпредставление динамически и с анимацией.
struct ContentView : View {
@State private var isButtonVisible = false
var body: some View {
VStack {
Toggle(isOn: $isButtonVisible.animation()) {
Text("add view button")
}
if isButtonVisible {
AnyView(DetailView())
.transition(.move(edge: .trailing))
.animation(Animation.linear(duration: 2))
}else{
AnyView(Text("test"))
}
}
}
}
Приведенный выше код прекрасно работает с анимацией. однако, когда я перемещаю часть выбора вида в функцию, анимация больше не работает (так как я хочу динамически добавлять различные виды, поэтому я помещаю логику в функцию.)
struct ContentView : View {
@State private var isButtonVisible = false
var body: some View {
VStack {
Toggle(isOn: $isButtonVisible.animation()) {
Text("add view button")
}
subView().transition(.move(edge: .trailing))
.animation(Animation.linear(duration: 2))
}
func subView() -> some View {
if isButtonVisible {
return AnyView(DetailView())
}else{
return AnyView(Text("test"))
}
}
}
это выглядитдля меня абсолютно то же самое, но я не понимаю, почему они имеют другой результат. Может кто-нибудь объяснить мне, почему? а какие-нибудь лучшие решения? Большое спасибо!