elG*_*pha 48 uicolor asset-catalog swift ios11 xcode9-beta
我通常在iOS上使用自定义UIColors使用Swift扩展,但现在使用iOS11/XCode9我们可以创建颜色集.我们怎样才能使用它们?
更新 - 提示
正如@Cœur所说,我们可以拖放de color,并像UIColor对象一样使用它,可能的解决方案可以用作扩展:
或者作为常数:
现在我想知道我们是否可以访问它们,就像UIImage访问资产图像一样,如:
UIImage(named: "image-name") -> UIColor(named: "color-name")
Run Code Online (Sandbox Code Playgroud)
小智 62
UIColor(named: "myColor")
Run Code Online (Sandbox Code Playgroud)
资料来源:WWDC 2017 Session 237 - MapKit的新功能
警告:您的项目的部署目标需要设置为iOS 11.0.
Cœu*_*œur 37
(问题更新的简答:UIColor(named: "MyColor")Xcode 9.0中有)
回答原来的问题:
在查看源代码时,它将转换为颜色文字:
#colorLiteral(red: 0, green: 0.6378085017, blue: 0.8846047521, alpha: 1)
你注意到红色,绿色和蓝色的值是如何不同的?这是因为我使用Color Space定义了它们Display P3,但colorLiteral使用的是Color Space sRGB.
Kis*_*mar 31
在 Xcode 11 中按 command + shift + L ,它将打开一个片段,选择最后一个,就像我在图像拖放中显示的那样。
rob*_*ers 18
将颜色集添加到资产目录,为其命名并在属性检查器中设置颜色,然后在代码中调用它UIColor(named: "MyColor").
在资产目录查看器中,单击主面板右下角的加号按钮,然后选择" 新建颜色集"

单击白色方块,然后选择" 属性"检查器(右侧窗格中最右侧的图标)
从那里你可以命名并选择你的颜色.

UIColor(named: "MyColor").这将返回一个可选项,因此在大多数情况下您需要打开它(这可能是少数可以接受强制解包的情况之一,因为您知道资产目录中存在颜色).Bol*_*him 16
您可以使用这种方式进行简单访问(swift 4 & swift 5)
enum AssetsColor: String {
case backgroundGray
case blue
case colorAccent
case colorPrimary
case darkBlue
case yellow
}
extension UIColor {
static func appColor(_ name: AssetsColor) -> UIColor? {
return UIColor(named: name.rawValue)
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
userNameTextField.textColor = UIColor.appColor(.blue)
Run Code Online (Sandbox Code Playgroud)
Hit*_*wal 11
您需要使用UIColor(named: "appBlue")。
而且,您可以在UIColor扩展中创建一个函数以进行简单访问。
enum AssetsColor {
case yellow
case black
case blue
case gray
case green
case lightGray
case seperatorColor
case red
}
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 .red:
return UIColor(named: "appRad")
case .seperatorColor:
return UIColor(named: "appSeperatorColor")
case .green:
return UIColor(named: "appGreen")
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样使用
userNameTextField.textColor = UIColor.appColor(.gray)
Run Code Online (Sandbox Code Playgroud)
// iOS
let color = UIColor(named: "SillyBlue")
// macOS
let color = NSColor(named: "SillyBlue")
Run Code Online (Sandbox Code Playgroud)