在android中有一个XML文件res/values/colors.xml
,可以让你整理应用中使用的所有颜色。像这样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#e60012</color>
<color name="blue">#33b5e5</color>
...
</resources>
在iOS中有这样的东西吗?如果没有,组织整个应用程序使用的颜色的最佳方法是什么?
我希望最终能够将[UIColor greenColor]
替换为[MyColor greenColor]
。
答案 0 :(得分:11)
我没有遇到像这样的默认文件。您可以创建自己的自定义.plist文件,该文件包含值,并在应用启动时加载。另一种选择是为UIColor
创建一个类别,它有一堆类方法返回你想要的颜色。
您可以创建如下所示的内容:
UIColor+CustomColors.h
:
@interface UIColor (CustomColors)
+ (UIColor *)customColor1;
+ (UIColor *)customColor2;
...
@end
UIColor+CustomColors.m
:
#import "UIColor+CustomColors.h"
@implementation UIColor (CustomColors)
+ (UIColor *)customColor1 {
return [UIColor colorWithRed:1.0f green:0.5f blue:0.5f alpha:1.0f];
}
+ (UIColor *)customColor2 {
return [UIColor colorWithRed:1.0f green:0.5f blue:1.0f alpha:1.0f];
}
...
@end
然后在你设置背景的地方你可以有这样的东西:
ViewController.m
:
#import "UIColor+CustomColors.h"
...
view.backgroundColor = [UIColor customColor1];
答案 1 :(得分:11)
晚于永远......
对于Swift:
创建一个新类:MyColors.swift,它是UIColor类的扩展:
extension UIColor{
static func color1() -> UIColor{
return Utils.UIColorFromRGB(0x333333)
}
static func color2() -> UIColor{
return Utils.UIColorFromRGB(0xffffff)
}
}
拥有另一个类(也许是Utils.swift)这个函数:
class func UIColorFromRGB(rgbValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
你可以像这样使用(注意UIColor之后的括号):
tableView.backgroundColor = UIColor.color1()
编辑:的 将函数更改为静态,以便可以像普通iOS颜色一样使用颜色,而无需创建UIColor实例。
答案 2 :(得分:1)
从Xcode 9开始,您可以在资产目录中定义颜色:
创建或使用现有的资产目录,然后单击编辑器左下方的加号按钮,然后选择“新颜色集”:
您将看到一个名为“颜色”的新颜色。
单击它,然后单击以显示属性检查器:
在这里您可以定义颜色和许多其他选项。
双击名称以更改颜色的名称。
Sketch和Zeplin等设计工具将使您可以将设计海峡中的颜色导出到Xcode的颜色资产中:
https://blog.zeplin.io/asset-catalog-colors-on-xcode-9-c4fdccc0381a