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

Posted

技术标签:

【中文标题】在 iOS 13 中更改主题时边框颜色不会改变【英文标题】:Border color doesn't change when changing themes in iOS 13 【发布时间】:2020-02-25 11:49:45 【问题描述】:

我最近开发了兼容深色模式的应用。

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

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

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

谢谢。

【问题讨论】:

changing ios 13 中的主题 喜欢来自Control Center 或来自设置。 我的意思是标题,拼写错误。 哦,明白了,刚刚修好了,顺便说一句,你知道如何解决这个问题吗? Here's how to handle the borderColor of a layer.。我们在 WWDC 上讨论了这个具体案例。 【参考方案1】:

感谢@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")
       
   

希望这对其他人有所帮助

【讨论】:

以上是关于在 iOS 13 中更改主题时边框颜色不会改变的主要内容,如果未能解决你的问题,请参考以下文章

颤动 - 更改OutlineInputBorder的边框颜色

更改 MUI TextField 边框颜色

更改 FLUTTER 中 TextFormField 的默认边框颜色

如何在WPF中使用触发器更改边框颜色?

使用带有 Material UI 的自定义主题在文本字段上指定悬停边框颜色

在html中 怎样改变表格边框线的颜色?