我有一个Swift应用程序,浏览许多视图控制器,所有的都有相似的外观。每个视图控制器中都有一些按钮,我没有创建IBOutlet属性(它们都只是通过Interface Builder触发分段)。我可以更改Swift应用程序中所有按钮的属性吗?
有一种简单的方法来改变背景颜色或在应用中的所有按钮的文本颜色,而不会改变它的每一个按钮,在IB,或为每个按钮创建一个IBOutlet?
我有一个Swift应用程序,浏览许多视图控制器,所有的都有相似的外观。每个视图控制器中都有一些按钮,我没有创建IBOutlet属性(它们都只是通过Interface Builder触发分段)。我可以更改Swift应用程序中所有按钮的属性吗?
有一种简单的方法来改变背景颜色或在应用中的所有按钮的文本颜色,而不会改变它的每一个按钮,在IB,或为每个按钮创建一个IBOutlet?
以下是这将简化事情的基本步骤,你的情况,这将必须重复每一个的viewController。
创建所有的按钮一个出口:
@IBOutlet var myButtons: [UIButton]!
连接(拖放)该出口与每个视图上的按钮。点击界面上的每个按钮,然后在connections inspector
(最后一个带有箭头的按钮)中找到“引用插座集合”。请注意,他们应该全部通过链接到myButtons
。
样式您在按钮循环:
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,并呼吁在:[buttonStyle styleButton:button]
。 styleButton
函数会设置样式(我没有测试过任何东西)。
结帐这个答案由@zisoft:How to loop through Outlets of a UIViewController with Swift,它是一个日志更详细的!
转到您的appDelegate,并改变(这只会改变文字颜色):
let buttonAppearance = UIButton.appearance()
buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0)
这将属性的文本颜色想为所有的按钮。 您可以的导航栏,等的TabBar做同样的....
我现在所做的是所有的按钮和编写的代码来改变他们的创建IB出口集合。但我想知道我是否可以使用外观代理? – Maxpower 2015-03-03 14:48:51