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 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章