首页 > 解决方案 > 在 iOS 13 中更改主题时边框颜色不会改变

问题描述

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

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

假设在亮模式下边框颜色为黑色,在暗模式和系统设置为暗 mdoe 时为白色。当我将系统设置更改为灯光模式并返回应用程序时,所有边框颜色都保持白色,应该是黑色。

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

谢谢。

标签: iosswiftios-darkmode

解决方案


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

你需要听traitCollectionDidChange。如果你想在外观改变时改变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")
       }
   }
}

希望这对其他人有帮助


推荐阅读