我有一个Swift应用程序可以浏览许多视图控制器,所有视图控制器都具有相似的外观。每个视图控制器中都有按钮,我没有创建IBOutlet属性(它们都只是通过Interface Builder触发segues)。
是否有一种简单的方法可以更改应用中所有按钮的背景颜色或文本颜色,而无需为IB中的每个按钮更改它,或为每个按钮创建IBOutlet?
答案 0 :(得分:8)
以下是简化操作的基本步骤,在您的情况下,必须为每个viewController重复这一步骤。
为所有按钮创建一个插座:
@IBOutlet var myButtons: [UIButton]!
使用视图上的每个按钮连接(拖动)此插座。单击界面中的每个按钮,然后查看connections inspector
中找到的“引用插座集合”(圆圈中带箭头的最后一个按钮)。请注意,它们应全部链接到myButtons
。
在for循环中设置按钮的样式:
for button in self.myButtons {
button.backgroundColor = UIColor.clearColor()
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.greenColor().CGColor
}
要使这项工作适用于整个应用程序,您可以选择一些方法进行调查。您可以使用常量,因此至少在您希望更改样式时,您只需修改一个文件:Constants in Objective-C,Global constants file in Swift。
或者,有几种方法可以使函数公开。我将尝试获取一些示例代码,但是一个名为buttonStyle
的类可能对每个viewController很重要,并在for循环中调用:[buttonStyle styleButton:button]
。 styleButton
函数会设置样式(我没有为此测试过任何东西)。
通过@zisoft:How to loop through Outlets of a UIViewController with Swift查看此答案,这是一个更详细的日志!
答案 1 :(得分:0)
转到appDelegate,然后更改(这只会更改文字颜色):
let buttonAppearance = UIButton.appearance()
buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0)
这将归因于所有按钮所需的文本颜色。 您可以对navigationBar,tabBar等执行相同操作....