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

Save styled element to reuse in other view controllers

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

将相同的样式应用于 UIButton 的多个实例:


严格程序化路线:

前两种方法是我会做的。第三个只是为了说明可以编写一个 init 从另一个按钮复制设置。

应用子预设样式 class:

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 应用带有扩展名的预设样式:

extension UIButton {

    func setCustomStyle1() {

        self.backgroundColor = UIColor.blackColor()
        // nore styling

    }
}

在 UIButton 的扩展中使用方便的初始化复制样式:

extension UIButton {

    convenience init(styleFromButton button: UIButton, frame: CGRect) {

        self.init(frame: frame)

        self.backgroundColor = button.backgroundColor

    }
}

Interface Builder解决方案:

创建一个新的 Swift 文件:

在新文件中创建 UIButton 的子 class:

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
    }
}

返回 Interface Builder 和 select 您想要设置样式的 UIButton。 Select右边第三个面板,这是身份检查器。 Select 你的子 class 作为 class 为 UIButton.

重复所有按钮的样式。


或者在 IB 中设置整个内容的样式,然后按住 Alt 并拖动以制作副本。