我们如何利用资产类别颜色设置我们如何利用资产类别颜色设置(How can we use Assets

2019-05-11 20:46发布

我通常使用使用具有斯威夫特扩展的iOS定制UIColors但现在iOS11 / XCode9我们可以创建颜色集。 我们如何使用它?

更新-提示

正如@心教堂说,我们可以拖放德颜色,使用它像一个的UIColor对象和可能的解决方案可以使用它作为一个扩展:

或为一个常数:

现在,我想知道,如果我们能像一个UIImage的访问的资产图像与否,就像访问它们:

UIImage(named: "image-name") -> UIColor(named: "color-name")

Answer 1:

UIColor(named: "myColor") 

来源: WWDC 2017年届237 -什么在MapKit的新


警告:你的项目的部署目标需要被设置到iOS 11.0。



Answer 2:

(短问题的答案更新:有UIColor(named: "MyColor")在Xcode 9.0)

回答原来的问题:

  1. 您创建的颜色集

  1. 你发现你的片段中的颜色,拖动正拖放

  1. 查看源代码时,它会转换为文字颜色:

    #colorLiteral(red: 0, green: 0.6378085017, blue: 0.8846047521, alpha: 1)

你注意到的红色,绿色和蓝色的值有何不同? 这是因为我使用色彩空间定义他们Display P3 ,但colorLiteral使用色彩空间sRGB



Answer 3:

精简版

添加颜色设置为资产目录,命名并设置在属性检查你的颜色,然后把它在你的代码UIColor(named: "MyColor")

完整说明

  1. 在资产目录浏览器,单击加号按钮在主面板的右下方,选择新颜色设置

  2. 点击白色方块,然后选择属性检查器 (在右窗格中最右边的图标)

  3. 从那里,你可以命名并选择你的颜色。

  4. 要在代码中使用它,把它用UIColor(named: "MyColor") 这将返回一个可选的,所以你需要解开它在大多数情况下(这是很可能的少数情况下,力解包是可以接受的一个,给你知道在你的资产目录的颜色存在)。


Answer 4:

 // iOS
 let color = UIColor(named: "SillyBlue")

 // macOS
 let color = NSColor(named: "SillyBlue")


Answer 5:

您需要使用UIColor(named: "appBlue")

你可以创建的UIColor扩展简单的访问功能。

enum AssetsColor {
case yellow
case black
case blue
case gray
case green
case lightGray
case seperatorColor
case rad
}

extension UIColor {

static func appColor(_ name: AssetsColor) -> UIColor? {
    switch name {
    case .yellow:
        return UIColor(named: "appYellow")
    case .black:
        return UIColor(named: "appBlack")
    case .blue:
        return UIColor(named: "appBlue")
    case .gray:
        return UIColor(named: "appGray")
    case .lightGray:
        return UIColor(named: "appLightGray")
    case .rad:
        return UIColor(named: "appRad")
    case .seperatorColor:
        return UIColor(named: "appSeperatorColor")
    case .green:
        return UIColor(named: "appGreen") 
    }
}

您可以使用它像这样

userNameTextField.textColor = UIColor.appColor(.gray)


文章来源: How can we use Assets Catalog Colors Sets