在 iOS 13 中更改主题时边框颜色不会改变
Posted
技术标签:
【中文标题】在 iOS 13 中更改主题时边框颜色不会改变【英文标题】:Border color doesn't change when changing themes in iOS 13 【发布时间】:2020-02-25 11:49:45 【问题描述】:我最近开发了兼容深色模式的应用。
暗模式也可以正常工作。
顺便说一句,当我从设备更改dark
->light
、light
->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的边框颜色
更改 FLUTTER 中 TextFormField 的默认边框颜色