Как оживить скрытые виды с помощью SwiftUI?

Я пробую SwiftUI, и, хотя я нашел многие его функции очень элегантными, у меня были проблемы с анимацией и переходами. В настоящее время у меня есть что-то вроде

if shouldShowText { Text(str).animation(.default).transition(AnyTransition.opacity.animation(.easeInOut)) }

Эта метка правильно перемещается, но когда она должна перемещаться (например, когда другой вид сверху скрыт), она не анимируется, как я ожидал, а скорее прыгает на место. Я заметил, что все обертываниеHStack работает, но я не понимаю, почему это необходимо, и я надеялся, что есть лучшее решение.

Спасибо

1 ответ

Если я правильно понял и реконструировал ваш сценарий, вам нужно использовать явные withAnimation (в зависимости от потребностей либо для "вида сверху", либо для обоих), как показано ниже

struct SimpleTest: View {

    @State var shouldShowText = false
    @State var shouldShowAbove = true
    var body: some View {
        VStack {
            HStack
            {
                Button("ShowTested") { withAnimation { self.shouldShowText.toggle() } }
                Button("HideAbove") { withAnimation { self.shouldShowAbove.toggle() } }
            }
            Divider()
            if shouldShowAbove {
                Text("Just some above text").padding()
            }
            if shouldShowText {
                Text("Tested Text").animation(.default).transition(AnyTransition.opacity.animation(.easeInOut))
            }
        }
    }
}
Другие вопросы по тегам