簡體   English   中英

SwiftUI - 過渡動畫在 GeoReader 中不起作用?

[英]SwiftUI - Transition Animations not working in GeoReader?

我有這樣的代碼:

            VStack{
                if (DeleteScreen.sharedInstance.postDelete){
                    VStack{
                        GeometryReader{_ in
                            DeletePostAlert()
                                .frame(maxWidth: .infinity, alignment: .center)
                                .frame(maxHeight: .infinity, alignment: .center)
                                .transition(AnyTransition.opacity.animation(.easeInOut(duration: 0.2)))
                            
                        }.background(Color.black.opacity(0.65))
                        
                        .onDisappear{

                        }
                        .onAppear{
                            
                            
                            
                        }
                    }
                }
            }

DeletePost 警報的定義如下:

class DeleteScreen: ObservableObject {
    static let sharedInstance = DeleteScreen()
    @Published var postDelete: Bool = false
}

但是,由於某種原因,過渡動畫不起作用。 我試圖讓 DeletePostAlert() 淡入或滑入或其他東西,但到目前為止我嘗試過的一切都沒有奏效。 我也嘗試過類似.animation(.spring()),但無濟於事。

任何關於我在這里做錯的指導將不勝感激。

謝謝

我也有完全一樣的問題。 看起來像一個錯誤。

一個可能對您有用的解決方案是在GeometryReader之上設置transition修飾符。

VStack {
    if(DeleteScreen.sharedInstance.postDelete) {
        VStack {
            GeometryReader { _ in
                DeletePostAlert()
                    .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
            }
            .transition(AnyTransition.opacity.animation(.easeInOut(duration: 0.2)))
            .background(Color.black.opacity(0.65))
            .onDisappear { ... }
            .onAppear { ... }
        }
    }
}

順便說一句:我想知道如果您忽略GeometryReadergeometry值,為什么還要使用它。

暫無
暫無

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

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