Jor*_*mar 11 xcode colors interface-builder ios
即使创建新的单一视图项目(Xcode 9.2),也可以在资产目录中创建一种命名的颜色,在IB中将主视图控制器的背景色设置为该颜色,然后尝试在viewDidLoad中更新背景色,背景颜色不会改变。其他人有没有经历过?这是正常行为吗?
view.backgroundColor = .red // Doesn't work, the asset color set in IB remains
Run Code Online (Sandbox Code Playgroud)
agi*_*007 11
超级有趣,您是正确的,它不会改变颜色值。关于在超类中设置IB属性的时间必须有所延迟。在DispatchQueue.main.async中包装颜色更改,使其可以在viewDidLoad中使用。可能是因为在超类对IB属性进行任何处理之后,都将最后处理此代码。希望这能解决问题。
DispatchQueue.main.async {
self.view.backgroundColor = UIColor.blue
}
Run Code Online (Sandbox Code Playgroud)
同样在viewDidLayoutSubviews和viewDidAppear中,它可以在没有DispatchQueue的情况下工作,但其行为与viewWillAppear中的viewDidLoad相同,但无法正常工作。