我是一个初学者SwiftUI程序员,我遇到了以下问题:
我有两个视图,一个是加载视图(矩形),另一个是web视图(WKWebView)。
像这样使用这两个视图:
var body : some View {
ZStack {
WebView(self.webView)
Rectangle()
.foregroundColor(self.state.isLoading ? self.loadingColor : Color.clear)
}
.onAppear {
// Initialize web view etc.
// Sets self.state.isLoading to false after some time has passed
}
}有趣的是,当self.state.isLoading从true更改为false时,UI会短暂闪烁白色。
我不知道为什么会发生这种情况,特别是因为WebView在显示时肯定不是白色的。
我尝试添加一个背景矩形,并设置self.webView和self.webView.scrollView的backgroundColor
var body : some View {
ZStack {
Rectangle()
.foregroundColor(Color.red)
WebView(self.webView)
Rectangle()
.foregroundColor(self.state.isLoading ? self.loadingColor : Color.clear)
}
.onAppear {
// Initialize web view etc.
self.webView.backgroundColor = UIColor.red
self.webView.scrollView.backgroundColor = UIColor.red
// Sets self.state.isLoading to false after some time has passed
}
}我希望看到一个短暂的红色屏幕,但它仍然是白色的。
将动画添加到Rectangle()转换可以使闪烁消失
Rectangle()
.foregroundColor(self.state.isLoading ? self.loadingColor : Color.clear)
.animation(.easeIn)我是不是遗漏了什么或者做错了什么?
发布于 2020-10-15 13:04:43
我认为这可能与self.state.isLoading变量有关,当它发生变化时,整个视图都会重新加载。您是否可以尝试在结构中将isLoading设置为局部变量(@State var isLoading: Bool = false),然后切换局部变量?
https://stackoverflow.com/questions/64362493
复制相似问题