Анимированные прятки и шоу Т в SwiftUI - PullRequest
0 голосов
/ 18 марта 2020

enter image description here enter image description here enter image description here

Когда я нажимаю Toggle Text, он должен скрыться или показать Избранное Text с Затухание анимации и задержка .
Или Дайте мне анимацию, пока текст будет отображаться на экране. Я пробовал несколько способов анимации, но пока не работает . Вот код

struct ContentView: View {

    @State var showText: Bool
    var body: some View {
        VStack() {
            Spacer()
            Image(systemName: "star.fill")

            if self.showText {
                // Changing selection value.
                    Text("Favorites")
                        .font(.custom("Helvetica Neue", size: 20))
                        .animation(Animation.easeOut(duration: 2.0).delay(0.5))
            }

            Spacer()
                .frame(height: 50)

            Button(action: {
                self.showText.toggle()
            }) {
                Text("Toggle Text")
            }
            Spacer()
        }
        .padding(5)
        .font(.custom("Helvetica Neue", size: 14))
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(showText: false)
    }
}

1 Ответ

1 голос
/ 18 марта 2020

Здесь возможен подход (протестировано и работает с Xcode 11.2 / iOS 13.2)

Примечание: предварительный просмотр плох при обработке переходов, поэтому тестируйте либо с помощью симулятора, либо с реальным устройством.

struct ContentView: View {

    @State var showText: Bool = false
    var body: some View {
        VStack() {
            Spacer()
            Image(systemName: "star.fill")

            if self.showText {
                // Changing selection value.
                Text("Favorites")
                    .font(.custom("Helvetica Neue", size: 20))
                    .transition(.opacity)  // << transition works in add/remove view
            }

            Spacer()
                .frame(height: 50)

            Button(action: {
                withAnimation(Animation.easeOut(duration: 2.0).delay(0.5)) {
                    self.showText.toggle() // << transition requires explicit animation
                }
            }) {
                Text("Toggle Text")
            }
            Spacer()
        }
        .padding(5)
        .font(.custom("Helvetica Neue", size: 14))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...