4

我想在一个地方定义一个调色板并只使用对它的引用,所以我可以在这个地方更改调色板,而无需触摸所有 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 预览中看到最终颜色。)

到目前为止,我找到的唯一解决方案是使用视图标签:为每个元素定义一个标签,在运行时获取它们,转换为正确的类并开始应用颜色。这很麻烦。

4

1 回答 1

2

我会为 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:然后在 Interface Builder 中引用子类。

于 2013-08-09T15:22:07.130 回答