我有一个xib。我有一个 View Controller ,它加载 xib 并将其添加到它的 subview 中。 xib 的背景颜色从 xib 文件(来自界面)设置为 定制颜色套装来自 Assets (由我创建)。
一切正常。
现在,在我的 View Controller 中,在 viewDidLoad 中,我想用其他东西覆盖该背景颜色。我发现并且它 100% 复制的问题是覆盖不会做任何事情,除非我在 viewDidAppear 中这样做。
所以总结...
为什么在第一种情况下我不能覆盖颜色而在第二种情况下我可以?
我在这里缺少一个隐藏的功能吗?如果从 xib 设置的颜色是自定义颜色,则您根本无法在 viewDidLoad 中覆盖 View 背景颜色,但如果它是任何其他颜色......如白色、红色、黑色或 w/e Xcode 已经按预期工作。
如果它有任何影响......我正在谈论的这个 View Controller 被推送到导航堆栈上。但我看不出这会产生什么影响。
复制步骤:
要复制它...创建一个新的示例项目...其中只有一个 View Controller 。接下来通过 assets -> new color set 添加自定义颜色。将 View Controller View 背景颜色从 Storyboard 设置为新添加的颜色集。然后在 viewDidLoad 内部将 View 的背景颜色更改为其他颜色......您会注意到,如果您运行应用程序,如果在 Storyboard 中有自定义颜色设置为背景,它不会改变。
不知何故, Storyboard覆盖的背景自定义颜色集在 viewDidLoad 之后和 viewDidAppear 之前发生在幕后。
最佳答案
我来晚了,但为 future 的读者提供了更多信息。
我刚刚在我的 iOS 11 和 iOS 12 应用程序中遇到了这个错误。自 iOS 13.0 以来,Apple 解决了这个错误。
因此,如果您支持以前的版本,您仍然需要从 @AlanS 应用解决方法,或者不要在 storyboard 和 xib 中使用自定义颜色:
func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if #available(iOS 13.0, *) {
// Fix iOS 12 storyboard color bug.
} else {
view.backgroundColor = UIColor.black
}
}
关于ios - 如果我使用来自 xib 的自定义颜色,为什么 iOS 不会覆盖背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007005/