我可以更改Swift应用程序中所有button的属性吗?

我有一个Swift应用程序,通过许多视图控制器导航,都具有相似的外观。 每个视图控制器中都有一些button,我没有创buildIBOutlet属性(它们都只是通过Interface Builder来触发Segve)。

有没有简单的方法来改变应用程序中所有button的背景颜色或文本颜色,而不必为IB中的每个button都改变它,或者为每个button创build一个IBOutlet?

这里是简单的事情的基本步骤,在你的情况下,这将不得不重复每个viewController。

  1. 为您的所有button创build一个sockets:

    @IBOutlet var myButtons: [UIButton]! 
  2. 连接(拖动)该sockets与视图上的每个button。 点击界面上的每个button,然后在connections inspectorfind“引用出口集合”(最后一个带有箭头的button)。 注意,他们应该全部通过链接到myButtons

  3. 在for循环中设置您的button样式:

     for button in self.myButtons { button.backgroundColor = UIColor.clearColor() button.layer.borderWidth = 1 button.layer.borderColor = UIColor.greenColor().CGColor } 

为了使这个工作应用程序广泛,你有几个选项来调查。 至less当你想改变样式时,你可以使用常量,你只需要修改一个文件: Objective-C中的 常量,Swift中的全局常量文件 。

或者有几种方法可以公开一个function。 我将尝试获取一些示例代码,但是一个名为buttonStyle的类可能对每个viewController都很重要,并在for循环中调用: [buttonStyle styleButton:button]styleButton函数会设置样式(我没有testing过任何东西)。

通过@zisoft检查这个答案: 如何使用Swift循环通过UIViewController的Outlets ,这是一个更详细的日志!

去你的appDelegate,并改变(这只会改变文字的颜色):

 let buttonAppearance = UIButton.appearance() buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0) 

这将为您的所有button设置一个文本颜色。 你可以做同样的navigationBar,tabBar等….