首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 11.x系统颜色

iOS 11.x系统颜色
EN

Stack Overflow用户
提问于 2017-12-28 00:35:24
回答 2查看 7.9K关注 0票数 1

我已经读了很多关于如何自定义视图颜色的文章,但还没有关于为标准控件检索系统颜色的文章,比如iOS 11.x或更早版本中的导航栏、状态栏和选项卡栏。UIColor类有3种系统颜色,但它们非常无用。例如,调用UINavigationBar.appearance()没有什么帮助,因为它可能会返回默认灯光配色方案的“透明”颜色,以防应用程序plist中没有定义任何内容。那么,为什么苹果不像其他公司那样提供一种以编程方式获取系统颜色的方法(针对Windows和Android)?有谁知道在哪里可以找到他们吗?提前发送。

EN

回答 2

Stack Overflow用户

发布于 2017-12-28 01:07:05

2019年的更新

UIColor现在提供静态属性来获取系统颜色。

示例:

代码语言:javascript
复制
UIColor.systemBlue

有关系统颜色的完整列表,请查看UIKit文档中的“标准颜色”页面:https://developer.apple.com/documentation/uikit/uicolor/standard_colors

旧答案

iOS不提供以编程方式访问这些颜色的方法。

相反,将这些颜色添加到您自己的项目中非常简单。如果颜色在未来的iOS版本中发生变化(并且您希望使用这些新颜色),则需要更新您的应用程序。

在大多数情况下,这不是问题,因为应用程序为品牌目的定义了自己的颜色。

代码语言:javascript
复制
enum SystemColor {

    case red
    case orange
    case yellow
    case green
    case tealBlue
    case blue
    case purple
    case pink

    var uiColor: UIColor {
        switch self {
        case .red:
            return UIColor(red: 255/255, green: 59/255, blue: 48/255, alpha: 1)
        case .orange:
            return UIColor(red: 255/255, green: 149/255, blue: 0/255, alpha: 1)
        case .yellow:
            return UIColor(red: 255/255, green: 204/255, blue: 0/255, alpha: 1)
        case .green:
            return UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
        case .tealBlue:
            return UIColor(red: 90/255, green: 200/255, blue: 250/255, alpha: 1)
        case .blue:
            return UIColor(red: 0/255, green: 122/255, blue: 255/255, alpha: 1)
        case .purple:
            return UIColor(red: 88/255, green: 86/255, blue: 214/255, alpha: 1)
        case .pink:
            return UIColor(red: 255/255, green: 45/255, blue: 85/255, alpha: 1)
        }
    }

}

示例用法:

代码语言:javascript
复制
myView.backgroundColor = SystemColor.blue.uiColor

如果您愿意,也可以将这些颜色定义为UIColor上的扩展名,如下所示:

代码语言:javascript
复制
extension UIColor {
    static let systemBlue = UIColor(red: 0/255, green: 122/255, blue: 255/255, alpha: 1)
    // etc
}

用法如下所示:

代码语言:javascript
复制
UIColor.systemBlue

Colors in the Human Interface Guidelines

票数 11
EN

Stack Overflow用户

发布于 2019-08-02 22:42:49

从Xcode11.0开始,您可以使用UIColor.systemRedUIColor.systemGreenUIColor.systemBlue和其他UIColor.system*属性来解决您所描述的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47995595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档