更改相同类型的所有界面元素的颜色

时间:2009-03-12 22:15:19

标签: iphone objective-c uikit

我想知道是否可以使用几行代码更改应用程序中按钮的默认颜色?手动更改每个按钮的颜色可能真的很无聊。特别是如果你有很多。

例如,我希望我的所有按钮都是橙色而不是原始白色。

提前谢谢你, 伊利亚安德。

2 个答案:

答案 0 :(得分:3)

我担心没有全球性的设定。

可以遍历对象的所有视图和子视图,查询其类型,然后根据需要应用自定义颜色。这使您可以在应用程序中有一个地方将视图传递给所有应用程序。

喜欢的东西;

//! Applies application specific styles to UIKit objects
void applyStyles(UIView* view)
{
  for(UIView* subview in view.subviews)
  {
    // test type of view
    if([[subview class] isEqualToString:@"UIButton"] == YES)
    {
      // apply colors for buttons
    }
    else if([[subview class] isEqualToString:@"SomethingElse"] == YES)
    {
      // apply colors for something else
    }
  }
}

答案 1 :(得分:1)

我建议创建一个UIButton(MyCustomButton)的子类,并在子类的构造函数中应用您想要的任何样式元素。

如上所述,将UIButton传递给某种“StyleManager”比说

更好的方法
button.backgroundColor = [UIColor orangeColor];

但您仍需要查看代码并说出类似

的内容
[StyleManager applyStyles:viewThatContainsButton];

这可以将应用样式的解决方案扩展到代码库中的每个Controller和一些View元素。创建子类允许您使用一行代码应用样式,而不是每个视图一行。

将问题的解决方案收集到一个类中可以消除此解决方案的蔓延,并且还应该减少 维护 的工作量。