簡體   English   中英

SwiftUI - 隱藏視圖時的動畫

[英]SwiftUI - Animation when hiding view

在視圖中的一組主體中顯示或隱藏視圖時,我試圖用 SwiftUI 找出動畫。 我有這個代碼:

    var body: some View {

        Group {

            if isIntroShown {
                EAIntroViewContentView()
                .transition(AnyTransition.opacity.animation(.easeInOut(duration: 1.0)))
            }

            if mainhomeMode == .mylists {
                MyLists()
                    .onReceive(publisher) { (payload) in
                        self.toggleMainView()
                    }
            } else {
                CarsHome()
                    .onReceive(publisher) { (payload) in
                        self.toggleMainView()
                    }
            }

        }.onReceive(publisherIntro) { (payload) in
            self.onShowIntroButton()
        }
    }

隱藏EAIntroView ,過渡動畫正常工作,但塊彈出將mainhomeMode移動到窗口頂部而沒有動畫。 如何隱藏和顯示介紹視圖使隱藏/顯示事件平滑?

好吧,經過一些測試和@Boris 的回復,我知道我需要做什么。

代碼應該是這樣的:

    func onShowIntroButton() {
        withAnimation(.easeInOut(duration: 0.5)) {
             isIntroShown.toggle()
        }
    }

    var body: some View {

            VStack{                    
                if isIntroShown {
                    EAIntroViewContentView()
                    .transition(AnyTransition.opacity.animation(.linear(duration: 0.5)))
                }

                Spacer()

                if mainhomeMode == .mylists {
                    MyLists()
                        .onReceive(publisher) { (payload) in
                            self.toggleMainView()
                        }

                } else {
                    CarsHome()
                        .onReceive(publisher) { (payload) in
                            self.toggleMainView()
                        }
                }

        }.onReceive(publisherIntro) { (payload) in
            self.onShowIntroButton()
        }
    }

我正在使用通知切換視圖。 所以動畫必須從toggle()函數中調用。

在這種情況下,我必須在onShowIntroButton()函數中切換介紹視圖時調用動畫。

VStakSpacer()也使動畫更流暢。希望對其他開發者有所幫助。

你有沒有嘗試過這樣的事情?

withAnimation {
    self.toggleMainView()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM