gpt4 book ai didi

ios - UIColor 动态提供程序 block 有时会收到错误的 userInterfaceStyle

转载 作者:搜寻专家 更新时间:2023-11-01 06:50:18 25 4
gpt4 key购买 nike

我有一堆颜色正在更新以支持新的 iOS 13 深色模式。我通过新的动态提供程序 block 构造函数以编程方式使用它们。这里的问题是,有时调用 block 时使用了错误的 userInterfaceStyle 属性值,导致颜色返回错误的值(有时是深色而不是浅色,有时是浅色而不是深色)。

根据我的理解,我不需要使用这个新构造函数来监听 traitCollection 更改或任何类型的内容。它应该自动执行(或者我错了吗?)。

这里有趣的是,我尝试通过 Assets 目录使用一些虚拟颜色来做到这一点,但它也不起作用。还尝试使用一些新系统提供的动态颜色,如 .systemBackgroundColor。有时也会解决颜色错误。

if #available(iOS 13.0, *) {
return UIColor { (traitCollection: UITraitCollection) -> UIColor in
if traitCollection.userInterfaceStyle == .dark {
return darkColor
}
else {
return lightColor
}
}
}

那么,究竟应该发生什么?这应该像我期望的那样工作,还是我绝对需要在特定位置分配颜色(比如在 viewWillLayoutSubviewstraitCollectionDidChange 中)?

手动解析颜色,使用 .resolvedColor(with: UITraitCollection) 有效。但是根据我从文档中了解到的情况,我不需要像这样手动解决它。

最佳答案

好的,所以我找到了问题的根源。为 navigationBarsearchBar 设置动态颜色时,请注意 View 的 barStyle 属性。我使用 .dark 作为导航栏(用白色文本显示状态栏)。这会导致 UIColor 动态提供程序解析错误的颜色。将其更改为 .default 为我修复了它。

对于 searchBar,我没有设置任何特定内容。强制它为 .default 也修复了它。

关于ios - UIColor 动态提供程序 block 有时会收到错误的 userInterfaceStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com