gpt4 book ai didi

ios - 了解旧版 iOS 中暗模式的 SystemColors

转载 作者:行者123 更新时间:2023-11-28 11:24:57 25 4
gpt4 key购买 nike

编辑:根据下面的对话,我感到困惑的是并非所有系统颜色都与旧操作系统兼容,在我的情况下,标签和系统背景颜色仅适用于 iOS13,这需要回退。现在说得通了。

我有一个支持 iOS11 的应用程序,但我想为使用 iOS13 的用户提供深色模式。

在 Xcode 11/iOS13 中,您可以为深色模式指定系统颜色,并为较旧的操作系统提供回退,如下所示...

if #available(iOS 13.0, *) {
view.textColor = UIColor.label
} else {
view.textColor = UIColor.black
}

如果我尝试在不使用旧系统回退的情况下使用颜色,我会收到一个错误,这...有点道理,我说有点道理,因为文档指出 system colors (StandarColors)在 iOS 7.0+ 中受支持。

有趣的是,如果我直接从 Attributes Inspector 使用新的系统颜色,我不会收到错误,所以我的问题是......

1- 当您直接从 Attributes Inspector 使用新的系统颜色时会发生什么,而您在选择它们时没有收到错误消息?

2- 使用 iOS11 的用户会在直接从 Attributes Inspector 中选择 label 颜色的 View 中看到什么?

谢谢

最佳答案

如果您在代码中使用新的系统颜色(systemOrange 除外,正如 rmaddy 正确指出的那样),您必须检查 iOS 13 可用性,因为该 API 之前不存在。

但是,当您在 Interface Builder 中选择这样的颜色时,它会自动在旧的 iOS 版本中工作。在这种情况下,Interface Builder 将在您的 Storyboard中插入以下内容:

<color key="backgroundColor" systemColor="systemOrangeColor" red="1" green="0.58431372550000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

如您所见,添加回退以防 systemColor 属性不被理解。

如果您想要一个与 iOS 11 兼容且不需要每次都进行 @available 检查的解决方案,您可以使用您在 Assets 目录中定义的颜色 Assets 。

我还创建了 a helper正是这样做的。

关于ios - 了解旧版 iOS 中暗模式的 SystemColors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58475985/

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