使用前景颜色对图像颜色进行动画处理实际上并不能交互式地进行动画处理

时间:2019-10-01 07:36:31

标签: swift swiftui

我正在尝试从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(_:)的文档,因此我认为教程中的引用应该是事实的来源。

所以我的问题是这是错误还是故意的行为?

0 个答案:

没有答案