我已经创建了一个配置管理器来更新 UI 设置而无需重新启动。大多数设置您都可以强制重绘,但它似乎更受标签栏的限制。
当我收到配置更改通知时,我使用以下内容更新了我的 UITabBarController
中的选项卡栏(注意:这可能是在 viewDidLoad
之后的任何时间):
self.tabBar.backgroundColor = tabBarBackgroundColour
这确实会更新颜色,但只会在大约 5-10 秒之后。
我已经尝试了各种方法,在标签栏和 View 上使用 setNeedsLayout
和 setNeedsDisplay
来强制更新,但它们都不起作用。
self.tabBar.setNeedsLayout()
self.tabBar.setNeedsDisplay()
或
self.view.setNeedsLayout()
self.view.setNeedsDisplay()
我也尝试过更新单个标签栏项目,因为我看到其他人在更新图像时遇到了类似的问题但无济于事。
最佳答案
确保您在主线程上更新背景颜色。
DispatchQueue.main.async { [weak self] in
self?.tabBar.backgroundColor = tabBarBackgroundColour
}
关于ios - Swift:动态刷新标签栏背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400647/