什么是iOS的等同于Android的colors.xml

时间:2014-08-07 16:17:31

标签: ios colors resources

在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]

3 个答案:

答案 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开始,您可以在资产目录中定义颜色:

创建或使用现有的资产目录,然后单击编辑器左下方的加号按钮,然后选择“新颜色集”:

enter image description here

您将看到一个名为“颜色”的新颜色。

单击它,然后单击以显示属性检查器:

enter image description here enter image description here enter image description here

在这里您可以定义颜色和许多其他选项。

双击名称以更改颜色的名称。

enter image description here

Sketch和Zeplin等设计工具将使您可以将设计海峡中的颜色导出到Xcode的颜色资产中:

https://blog.zeplin.io/asset-catalog-colors-on-xcode-9-c4fdccc0381a