0

我有一个UIViewController由另一个模态呈现的UIViewController。这UIViewController有一个UITableView带有自定义UIView设置的tableFooterView.

所以我遇到的问题是:切换设备的系统外观时,某些颜色无法正确显示。正如我所读到的,cgColor不会自动适应外观变化:

此属性中的颜色对象不会自动适应暗模式更改。如果使用它来设置界面元素的颜色,则必须在当前 trait 集合的 userInterfaceStyle trait 发生变化时自行更新该颜色。有关如何可靠地应用颜色信息的信息,请参阅在您的界面中支持深色模式。

https://developer.apple.com/documentation/uikit/uicolor/1621954-cgcolor

所以为了解决这个问题,我覆盖了这样使用的traitCollectionDidChange内部:UIViewcgColor

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)

        updateView()
    }

在该updateView方法中,我只是简单地更新了cgColor一些子层的属性,但是这个方法永远不会被调用。我尝试在具有相同问题superview的 中覆盖此方法。UIView它只会在UIViewController无用的级别上调用,因为tableFooterView在那个时间点尚未设置。

有什么想法可以解决这个问题吗?

4

0 回答 0