swift - 使用 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(_:)的文档,所以我认为教程中的引用应该是事实的来源。
所以我的问题是它是错误还是故意行为?
解决方案
推荐阅读
- reactjs - React & Redux:访问道具时出现未定义的错误
- python - AttributeError:模块“os”没有属性“uname”
- spring - Grails 集成测试默认使用 H2 创建数据源,而不是来自 TEST 环境的数据源配置
- ios - 使用从服务器到两个不同结构的两种不同的可能 json 响应快速解码 json 数据
- javascript - 没有数据库的完整 CRUD 应用程序可能吗?
- sql - 如何在雪花中调用名为“组”的列?
- c++ - 将 char 数组传递给函数 C++
- amazon-web-services - 使用 CloudFormation 在现有 AWS S3 存储桶中创建文本文件
- dsl - 是否可以导出由 JetBrains MPS 创建的 DSL 编译器并独立使用(例如从另一个 Java 程序调用它)
- xcode - 第一次运行后刷新 Swift UI 中的文本