ios - 在不指定 DispatchQueue 的情况下使用 withAnimation 会发生什么
问题描述
struct MyShimmer: View {
@State var show = false
var body: some View {
ZStack {
Color.black
VStack {
ZStack {
Text("Chao")
.foregroundColor(Color.white.opacity(0.5))
.font(.system(size: 40))
Text("Chao")
.foregroundColor(Color.white)
.font(.system(size: 40))
.mask(
Color.red.opacity(0.5)
.frame(width: 20)
.offset(x: self.show ? 180 : -130)
)
}
.onAppear(){
DispatchQueue.main.async {
withAnimation(Animation.default.speed(0.15).delay(0).repeatForever(autoreverses: false)){
self.show.toggle()
}
}
}
}
}
}
}
问题是,如果我注释掉 DispatchQueue.main.async,整个视图会从左上角或屏幕向外扩展。
如果我在某处放置一个按钮并在单击按钮时执行不带 DispatchQueue.main.async 的 withAnimation 任务,则它可以正常工作
有谁知道会发生什么?
我正在使用 XCode(版本 12.5.1 (12E507))我的 mac 正在运行 macos big sur 11.4 (20F71)
解决方案
推荐阅读
- .htaccess - 特定 URL 重定向到主页
- html - flexbox 容器内的 Divs 动画
- php - 创建多维数组,并处理 json_encode 的相同键名问题
- c++ - 链接 DLL 后空 QT GUI 崩溃
- javascript - JavaScript:如何在执行条件的特定持续时间后清除间隔
- python-3.x - Matplotlib 故障 [python3]
- laravel - laravel 会在返回的模型集合的任何位置重新连接到数据库吗?
- javascript - 过滤在 vue.js 上的计算属性中定义的结果的函数的问题
- shell - 如何用 awk 处理最后一个命令的结果?
- arrays - 如何在 TypeScript 中定义具有交替类型的数组?