SwiftUI - 过渡动画在 GeoReader 中不起作用?

Posted

技术标签:

【中文标题】SwiftUI - 过渡动画在 GeoReader 中不起作用?【英文标题】:SwiftUI - Transition Animations not working in GeoReader? 【发布时间】:2020-07-18 20:10:20 【问题描述】:

我有这样的代码:

            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()) 的方法,但无济于事。

任何关于我在这里做错的指导将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

我也有同样的问题。看起来像一个错误。

一个可能对您有用的解决方案是在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  ... 
        
    

顺便说一句:我想知道如果您忽略 GeometryReader 的值,为什么还要使用它。

【讨论】:

以上是关于SwiftUI - 过渡动画在 GeoReader 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 动画过渡

如何在 SwiftUI 中动画/过渡文本值更改

SwiftUI:如何使用延迟在两个图像之间设置动画过渡?

SwiftUI 动画:一些隐式过渡动画在 iOS 13 上被破坏了?

滚动视图中的 SwiftUI 动画/过渡表现奇怪

在 SwiftUI 中显示 NavigationLink 时过渡动画消失了