我可以更改Swift应用程序中所有button的属性吗?
我有一个Swift应用程序,通过许多视图控制器导航,都具有相似的外观。 每个视图控制器中都有一些button,我没有创buildIBOutlet属性(它们都只是通过Interface Builder来触发Segve)。
有没有简单的方法来改变应用程序中所有button的背景颜色或文本颜色,而不必为IB中的每个button都改变它,或者为每个button创build一个IBOutlet?
这里是简单的事情的基本步骤,在你的情况下,这将不得不重复每个viewController。
-
为您的所有button创build一个sockets:
@IBOutlet var myButtons: [UIButton]!
-
连接(拖动)该sockets与视图上的每个button。 点击界面上的每个button,然后在
connections inspector
find“引用出口集合”(最后一个带有箭头的button)。 注意,他们应该全部通过链接到myButtons
。 -
在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等….