保存样式元素以在其他视图控制器中重用

时间:2015-11-11 17:48:28

标签: ios xcode swift styling

我正在使用Xcode创建一个iOS应用程序,其中所有按钮应该具有相同的样式。这些按钮之间的唯一区别是它们的高度和宽度。有没有办法保存我设置的第一个,然后在不同的视图控制器中再次使用它,而不复制?我想如果这是可能的,它会为我节省很多时间。

1 个答案:

答案 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

    }
}

Interface Builder解决方案:

创建一个新的Swift文件:

enter image description here enter image description here

在新文件中创建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的类。

重复所有按钮来设置样式。

enter image description here

或者在 IB 和Alt-Drag中设置整个内容的样式以制作副本。