首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SwiftUI:查看短暂的白色闪烁

SwiftUI:查看短暂的白色闪烁
EN

Stack Overflow用户
提问于 2020-10-15 06:44:33
回答 1查看 296关注 0票数 0

我是一个初学者SwiftUI程序员,我遇到了以下问题:

我有两个视图,一个是加载视图(矩形),另一个是web视图(WKWebView)。

像这样使用这两个视图:

代码语言:javascript
运行
复制
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.isLoadingtrue更改为false时,UI会短暂闪烁白色。

我不知道为什么会发生这种情况,特别是因为WebView在显示时肯定不是白色的。

我尝试添加一个背景矩形,并设置self.webViewself.webView.scrollView的backgroundColor

代码语言:javascript
运行
复制
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()转换可以使闪烁消失

代码语言:javascript
运行
复制
Rectangle()
    .foregroundColor(self.state.isLoading ? self.loadingColor : Color.clear)
    .animation(.easeIn)

我是不是遗漏了什么或者做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-10-15 13:04:43

我认为这可能与self.state.isLoading变量有关,当它发生变化时,整个视图都会重新加载。您是否可以尝试在结构中将isLoading设置为局部变量(@State var isLoading: Bool = false),然后切换局部变量?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档