仅使用 .animation 修饰符的显式动画不起作用
Posted
技术标签:
【中文标题】仅使用 .animation 修饰符的显式动画不起作用【英文标题】:Explicit animations using only an .animation modifier don't work 【发布时间】:2019-10-16 22:53:16 【问题描述】:我正在使用 SwiftUI,我注意到来自 this Apple tutorial 的代码无法正常工作。我想为scaleEffect
应用动画,但不为rotationEffect
应用动画,但在提到的教程中这样做是行不通的——当添加.animation(nil)
时,根本没有动画。这是一个错误还是我做错了什么?
struct ContentView: View
@State private var showDetail = false
var body: some View
Button(action:
self.showDetail.toggle()
)
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.rotationEffect(.degrees(showDetail ? 90 : 0))
.animation(nil)
.scaleEffect(showDetail ? 1.5 : 1)
.padding()
.animation(.easeInOut(duration: 2))
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
【问题讨论】:
【参考方案1】:只需将.animation
放在.rotationEffect
之前,它不会应用到效果上
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.scaleEffect(showDetail ? 1.5 : 1)
.padding()
.animation(.easeInOut(duration: 2))
.rotationEffect(.degrees(showDetail ? 90 : 0))
【讨论】:
是的,这应该有效,但它没有!正在播放scaleEffect
和 rotationEffect
的动画。我不确定是否存在错误或我的 Xcode 已损坏。
@czater 我检查了 Xcode 11.2 Beta 2,它工作正常,缩放效果是动画的,而旋转不是
是的,这在 Xcode 11.2 Beta 2 中运行得非常好!
好的,rotationEffect
可以工作,但是当你将其更改为position
时,它就不再工作了....position(showDetail ? CGPoint(x: 100, y: 100) : CGPoint(x: 200, y: 200))
这很奇怪:/
我有同样的问题,在我的情况下,我使用的是 xcode 11.2.1,而 .animation 修饰符在 ios 13.2 上不起作用。在 IOS 13.1 上运行时,我的动画效果很好。以上是关于仅使用 .animation 修饰符的显式动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章