我正在使用Xcode创建一个iOS应用程序,其中所有按钮应该具有相同的样式。这些按钮之间的唯一区别是它们的高度和宽度。有没有办法保存我设置的第一个,然后在不同的视图控制器中再次使用它,而不复制?我想如果这是可能的,它会为我节省很多时间。
答案 0 :(得分:4)
将相同的样式应用于lambda
的多个实例:
前两种方法就是我要做的。第三个是为了说明可以编写一个UIButton
来复制另一个按钮的设置。
使用子类应用预设样式:
init
将具有扩展名的预设样式应用于UIButton:
class StyledButton : UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.blackColor()
// more styling
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
在UIButton的扩展名中使用便捷init复制样式:
extension UIButton {
func setCustomStyle1() {
self.backgroundColor = UIColor.blackColor()
// nore styling
}
}
创建一个新的Swift文件:
在新文件中创建extension UIButton {
convenience init(styleFromButton button: UIButton, frame: CGRect) {
self.init(frame: frame)
self.backgroundColor = button.backgroundColor
}
}
的子类:
UIButton
返回界面生成器,然后选择要设置样式的class StyledButton : UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
style()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
style()
}
private func style() {
self.backgroundColor = UIColor.blackColor()
// more styling
}
}
。
选择右侧的第三个面板,这是身份检查器。
选择您的子类作为UIButton
的类。
重复所有按钮来设置样式。
或者在 IB 和Alt-Drag中设置整个内容的样式以制作副本。