首页 > 解决方案 > 使用 foregroundColor 动画图像颜色实际上并没有交互式动画

问题描述

我正在尝试 Apple 的 SwiftUI 教程中的一些动画内容。将动画添加到单个视图部分说:

视图的颜色、不透明度、旋转、大小和其他属性都是可动画的。

但是当我尝试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(_:)的文档,所以我认为教程中的引用应该是事实的来源。

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

标签: swiftswiftui

解决方案


推荐阅读