ios - Swift:动态刷新标签栏背景颜色

标签 ios swift uitabbarcontroller

我已经创建了一个配置管理器来更新 UI 设置而无需重新启动。大多数设置您都可以强制重绘,但它似乎更受标签栏的限制。

当我收到配置更改通知时,我使用以下内容更新了我的 UITabBarController 中的选项卡栏(注意:这可能是在 viewDidLoad 之后的任何时间):

self.tabBar.backgroundColor = tabBarBackgroundColour

这确实会更新颜色,但只会在大约 5-10 秒之后。

我已经尝试了各种方法,在标签栏和 View 上使用 setNeedsLayoutsetNeedsDisplay 来强制更新,但它们都不起作用。

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/

相关文章:

ios - 使用 CMMotionManager 快速配置加速度计跟踪

ios - 如何在 Swift 3 中的图像上添加不透明的黑色

iphone - 如何创建在选项卡之间切换时保留在屏幕上的 View ?

ios - 将 UIButton 放在 TabBar 的前面

ios - 如何创建一个 UIView?

iOS 应用程序因 "CFNetwork"而崩溃

ios - NSLayoutdString的AutoLayout行高计算错误

ios - TableView 编辑模式不会为单元格添加动画

swift - macOS:向 Cocoa 绑定(bind)公开 Swift 属性的正确方法

ios - 标签栏图标应该有多大?