在iOS 13中更改主题时边框颜色不会更改

时间:2019-10-30 08:11:08

标签: ios swift ios-darkmode

我最近开发了与黑暗模式兼容的应用程序。

暗模式也可以正常工作。 顺便说一句,当我从设备的dark-> lightlight-> dark模式更改时,除边框颜色外,所有颜色均按预期更改。

假设在浅色模式下边框颜色为黑色,而在深色模式和系统设置为深色时边框颜色为白色。 当我将系统设置更改为亮模式并返回到应用程序时,所有边框颜色均保持白色,应该是黑色。

有人遇到过这个问题吗?您能帮我解决这个问题吗? 当我想在应用程序中实现实时主题更新时,这是一个严重的问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

由于@KurtRevis,我终于设法解决了这个问题。

您需要听traitCollectionDidChang e。如果要在外观更改时更改borderColor,则需要类似以下的代码。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
   if #available(iOS 13.0, *) {
       if (traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection)) {
           // ColorUtils.loadCGColorFromAsset returns cgcolor for color name
           layer.borderColor = ColorUtils.loadCGColorFromAsset(colorName: "CellBorderColor")
       }
   }
}

希望这对其他人有帮助