ios - 在 iOS 13 中更改主题时边框颜色不会改变
问题描述
我最近开发了与暗模式兼容的应用程序。
暗模式也可以正常工作。顺便说一句,当我从设备更改dark
-> light
,light
->dark
模式时,除边框颜色外,所有颜色都按预期更改。
假设在亮模式下边框颜色为黑色,在暗模式和系统设置为暗 mdoe 时为白色。当我将系统设置更改为灯光模式并返回应用程序时,所有边框颜色都保持白色,应该是黑色。
有没有人遇到过这个问题,你能帮我解决这个问题吗?当我想在应用程序中实现实时主题更新时,这是一个严重的问题。
谢谢。
解决方案
感谢@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")
}
}
}
希望这对其他人有帮助
推荐阅读
- c++ - 用检查复制/移动省略
- ios - 使用wkwebview时如何在带有cordova的img标签中显示相机图像
- .htaccess - htaccess 301 重定向 url 有和没有路径
- c++ - 模板化方法中的运算符重载
- python - 带有标头的Python套接字发布json请求
- leaflet - 破折号传单获取标记位置
- javascript - 防止部分页面被加载的 Chrome 扩展
- python - 在一个类中的一个方法中读取数据帧,并在同一个类中的另一个方法中调用它
- c# - GroupBy 匿名类型差异 - VB.net 与 C#
- servicenow - 如何在 RITM 和目录任务中将多行文本变量设为只读?