在 iOS 13 中更改主题时边框颜色不会更改
Border color doesn't change when changing themes in iOS 13
我最近开发了一个兼容深色模式的应用程序。
深色模式也能正常工作。
顺便说一句,当我从设备的 dark
->light
、light
->dark
模式更改时,除边框颜色外,所有颜色都按预期更改。
假设浅色模式下边框颜色为黑色,深色模式下边框颜色为白色且系统设置为深色 mdoe。
当我将系统设置更改为灯光模式并将 return 更改为应用程序时,所有边框颜色都保持白色,这应该是黑色的。
有没有人遇到过这个问题,你能帮我解决这个问题吗?
当我想在应用程序中实现实时主题更新时,这是一个严重的问题。
谢谢。
感谢@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")
}
}
}
希望这对其他人有帮助
我最近开发了一个兼容深色模式的应用程序。
深色模式也能正常工作。
顺便说一句,当我从设备的 dark
->light
、light
->dark
模式更改时,除边框颜色外,所有颜色都按预期更改。
假设浅色模式下边框颜色为黑色,深色模式下边框颜色为白色且系统设置为深色 mdoe。 当我将系统设置更改为灯光模式并将 return 更改为应用程序时,所有边框颜色都保持白色,这应该是黑色的。
有没有人遇到过这个问题,你能帮我解决这个问题吗? 当我想在应用程序中实现实时主题更新时,这是一个严重的问题。
谢谢。
感谢@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")
}
}
}
希望这对其他人有帮助