我有一个UIViewController
由另一个模态呈现的UIViewController
。这UIViewController
有一个UITableView
带有自定义UIView
设置的tableFooterView
.
所以我遇到的问题是:切换设备的系统外观时,某些颜色无法正确显示。正如我所读到的,cgColor
不会自动适应外观变化:
此属性中的颜色对象不会自动适应暗模式更改。如果使用它来设置界面元素的颜色,则必须在当前 trait 集合的 userInterfaceStyle trait 发生变化时自行更新该颜色。有关如何可靠地应用颜色信息的信息,请参阅在您的界面中支持深色模式。
https://developer.apple.com/documentation/uikit/uicolor/1621954-cgcolor
所以为了解决这个问题,我覆盖了这样使用的traitCollectionDidChange
内部:UIView
cgColor
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
updateView()
}
在该updateView
方法中,我只是简单地更新了cgColor
一些子层的属性,但是这个方法永远不会被调用。我尝试在具有相同问题superview
的 中覆盖此方法。UIView
它只会在UIViewController
无用的级别上调用,因为tableFooterView
在那个时间点尚未设置。
有什么想法可以解决这个问题吗?