我想在一个地方定义一个调色板,并只使用对它的引用,这样我就可以在这个地方更改调色板,而不必触摸所有UI元素来修改颜色。
为了澄清,以下是我如何在android中实现相同的事情:
- 定义colors.xml:
<resources>
<color name="main_text">#ffffffff</color>
</resources>
- 使用如下颜色:
<TextView ...
android:text="foobar"
android:textColor="@color/main_text"
/>
在iOS SDK上,UI通常不是用手写的xml来描述的。但我想知道是否有任何方法可以在IB中使用某种颜色引用,然后稍后重新定义颜色。(我也不需要在xcode预览中看到最终的颜色。)
到目前为止,我找到的唯一解决方案是使用视图标记:为每个元素定义一个标记,在运行时获取这些标记,转换到正确的类并开始应用颜色。这很麻烦。
我会为UIColor类创建一个类别。这样,你就可以像这样声明额外的颜色:
+ (UIColor *)lightBlueColor
{
return [UIColor colorWithRed:132.0f / 255.0f green:207.0f / 255.0f blue:218.0f / 255.0f alpha:1.0f];
}
然后像使用其他颜色一样使用它们:
[self.view setBackgroundColor:[UIColor lightBlueColor]];
否则,您可以考虑将要重新着色的任何UI元素子类化。这样,您可以在initWithCoder:
中进行颜色修改,然后在接口生成器中引用子类。