所以我已经发布在Apple Developer Forums上,但尚未得到答复。
iOS 13引入了暗模式和许多具有预定义的亮和暗变体的系统颜色:(https://developer.apple.com/videos/play/wwdc2019/214/)
这些颜色可以直接在情节提要中用作已命名的颜色。它们也已作为静态颜色添加到UIColor类中:(https://developer.apple.com/documentation/uikit/uicolor/ui_element_colors)
但是,添加到UIColor的静态颜色在iOS 11和12中的代码中不可用。这很难使用,因为对新系统颜色的所有引用都必须包装在可用性检查中:
[这也引发了一个问题:在iOS 11和12上,直接在Storyboard中使用时,系统颜色会解析为什么?在我们的测试中,它们似乎可以解析为Light变体,尽管我们尚未测试所有变量。
这是我们所追求的方法。我们将所有颜色添加到我们的Colors.xcassets文件中以支持较旧的iOS版本,并通过我们的CustomColors Enum执行单个版本检查和映射,以便根据iOS版本返回正确的UIColor系统颜色。放弃对iOS 11和12的支持后,我们将从Colors.xcassets中删除相应的颜色,因为我们将仅使用系统颜色。我们还将重构所有情节提要以使用新的系统颜色。
此方法的缺点是:
[其他方法:(How do I easily support light and dark mode with a custom color used in my app?)
[通过使用新的系统颜色,同时仍支持iOS 11和12,可以使用其他哪些方法来支持iOS 13的暗模式?在较旧的iOS版本上的情节提要中使用新的系统颜色是否安全?
所以我已经发布在Apple Developer Forums上,但尚未得到答复。背景:iOS 13引入了暗模式和多种系统颜色,并具有预定义的亮和暗变体:(https:// ...
将Enum和UIColor Extension结合使用是最后的方法。