ios - 设置命名颜色后,无法以编程方式更改 UIView 的颜色

标签 ios xcode colors interface-builder

即使您创建一个新的单 View 项目(Xcode 9.2),在 Assets 目录中创建一个命名的颜色,在 IB 中将主视图 Controller 的背景颜色设置为该颜色,并尝试在 IB 中更新背景颜色viewDidLoad,背景色不会改变。其他人有过这种经历吗?这是正常行为吗?

view.backgroundColor = .red // Doesn't work, the asset color set in IB remains

最佳答案

super 有趣,你是对的,它并没有像预期的那样改变颜色值。关于何时在父类(super class)中设置 IB 属性,肯定会有一些延迟。在 DispatchQueue.main.async 中包装颜色变化使其在 viewDidLoad 中工作。可能是因为该代码将在父类(super class)对 IB 属性执行的任何操作之后最后处理。希望这能解决问题。

DispatchQueue.main.async {
   self.view.backgroundColor = UIColor.blue
}

同样在 viewDidLayoutSubviews 和 viewDidAppear 中,它在没有 DispatchQueue 的情况下工作,但与 viewWillAppear 中的 viewDidLoad 具有相同的行为,但未按预期工作。

关于ios - 设置命名颜色后,无法以编程方式更改 UIView 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50373464/

相关文章:

ios - Swift 字典的 Swift 数组

ios - Xcode 11.4 不生成自定义意图类

ios - 声明依赖于 objc 库的 Podspec

android - 缓存静态 map 服务器端以用于移动应用程序?

iphone - 计算 objective-c 中的时间差

ios - 我在 CollectionViewCell 中有一个 UIButton,它又在 TableViewCell 中。如何通过单击 UIButton 导航到下一个 View Controller ?

ios - Xcode UIDragSession 中断音频线程

r - 特定值上方和下方的 geom_line 的不同颜色

r - 当 geom_hline 在颜色图例中有单独的(附加)条目时,如何合并颜色和形状的图例?

Eclipse 的颜色主题问题