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)