Анимация перехода SwiftUI применяется к элементам Inside View отдельно
У меня очень странная проблема с переходами/анимацией SwiftUI. Мое намерение состоит в том, чтобы перемещать целые представления внутрь или наружу, но кажется, что анимация применяется к элементам внутри представления отдельно, а также ко всему представлению. Результат очень странный и неприятный — текст и кнопка внутри представления в конечном итоге движутся с разной скоростью и отдельно, тогда как они должны быть зафиксированы на месте и перемещаться вместе с родительским представлением. Может ли кто-нибудь объяснить, почему это происходит? Спасибо!
Entrypoint.swift
import SwiftUI
enum Page {
case login, onboarding, home
}
struct Entrypoint: View {
@State var onboarding: Bool = true
@State var page: Page = .login
func finishLogin() {
page = .onboarding
}
func finishOnboarding() {
page = .home
}
// Slide transition
let transition = AnyTransition.asymmetric(insertion: .move(edge: .trailing), removal: .offset(x: -24))
var body: some View {
ZStack {
switch page {
case .login:
LoginView(finish: finishLogin)
.transition(transition)
case .onboarding:
OnboardingView(finish: finishOnboarding)
.transition(transition)
case .home:
RootView()
.transition(transition)
}
}.animation(.easeInOut, value: page)
}
}
LoginView.swift
import SwiftUI
struct LoginView: View {
var finish: () -> Void
init(finish: @escaping () -> Void) {
self.finish = finish
}
var body: some View {
VStack {
Group {
Text("Hello, World!")
Button(action: {
finish()
}) {
Text("Login")
}
}.frame(minWidth: 0, maxWidth: .infinity)
}.background(Color.green)
.frame(minWidth: 0, maxWidth: .infinity)
}
}