我正在尝试从Apple的SwiftUI教程中获得一些动画素材。 Add Animations to Individual Views部分说:
视图的颜色,不透明度,旋转度,大小和其他属性均可设置动画。
但是,当我尝试通过切换foregroundColor(_:)
属性的值来使用State
修饰符对“图像颜色”进行动画处理时,它实际上并不是在进行动画处理。为了进行调查,我增加了动画的持续时间。
struct ContentView: View {
@State var isFavorite = false
var body: some View {
Button(action: {
withAnimation(.easeInOut(duration: 5)) { self.isFavorite.toggle() }
}) {
Image(systemName: "star.fill")
.imageScale(.large)
.foregroundColor(self.isFavorite ? .orange : .gray)
.rotationEffect(.degrees(self.isFavorite ? 360 : 0))
}
}
}
在上面的代码中,颜色更改orange <<->> gray
立即发生。但是旋转效果确实尊重动画,并且它也是交互式的。
基本上不是重复的内容:
我遇到了类似的问题SwiftUI: Animate Text color - foregroundColor(),但这与Text
组件有关。因此,我认为这不是直接重复。
并且开发者站点上没有足够的关于foregroundColor(_:)的文档,因此我认为教程中的引用应该是事实的来源。
所以我的问题是这是错误还是故意的行为?