Ios 是否有方法更改和保存属性的默认值,以便它们用于将来创建的所有新对象?

Ios 是否有方法更改和保存属性的默认值,以便它们用于将来创建的所有新对象?,ios,swift,xcode,attributes,Ios,Swift,Xcode,Attributes,是否有方法更改和保存属性的默认值,以便它们用于将来创建的所有新对象 例如: 在为项目创建按钮或文本字段并设置其样式后,我希望所有其他按钮都具有相同的样式。相反,创建的每个新按钮、文本框等都具有Xcode的默认属性。必须为每一个新对象设置属性是很累人的。是否有方法将创建的对象保存为该对象类型的“新”默认值…至少对于当前项目 我尝试过使用IBDesignables和IBInspectable,但这只会创建新属性。事实上,新属性甚至不显示在查看属性检查器时指定的默认值。在检查器中更改现有属性(例如背景

是否有方法更改和保存属性的默认值,以便它们用于将来创建的所有新对象

例如: 在为项目创建按钮或文本字段并设置其样式后,我希望所有其他按钮都具有相同的样式。相反,创建的每个新按钮、文本框等都具有Xcode的默认属性。必须为每一个新对象设置属性是很累人的。是否有方法将创建的对象保存为该对象类型的“新”默认值…至少对于当前项目

我尝试过使用IBDesignables和IBInspectable,但这只会创建新属性。事实上,新属性甚至不显示在查看属性检查器时指定的默认值。在检查器中更改现有属性(例如背景或边框)时,会创建一个完全独立的属性,然后会混淆哪个属性覆盖哪个属性

另一个例子: 我希望文本字段设置为一定的大小,具有一定的字体、大小和颜色、边框、圆角等。这将是默认值,但在我的故事板上,我可能希望更改宽度或其他未设置为默认值的属性


我曾尝试使用数百种不同的术语进行搜索,但没有任何内容符合我的要求。不会那么难吧????是的,说到Xcode和swift,我有点笨。我能想到的所有其他编码工具都有一个在创建新对象时设置默认值的规定。

您要做的就是所谓的子类化。创建一个从要扩展的类继承的新类,然后对其执行自定义设置。您可以通过在Identity Inspector中设置自定义类来使用Storyboard中的子类,如果您希望能够从Storyboard中设置属性,则可以通过
@IBInspectable
添加它们,并将该属性设置为实际属性。如果您不需要在故事板中查看自定义设置,那么只需在视图初始化中设置值就更容易了

@IBDesignable
class MyTextField: UITextField {
    @IBInspectable
    var cornerRadius: CGFloat {
        set { self.layer.cornerRadius = newValue }
        get { self.layer.cornerRadius }
    }
    @IBInspectable
    var borderColor: UIColor? {
        set { super.layer.borderColor = newValue?.cgColor }
        get { UIColor(cgColor: self.layer.borderColor ?? UIColor.black.cgColor) }
    }
    override var borderStyle: UITextField.BorderStyle {
        set { super.borderStyle = .none }
        get { .none }
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setupView()
    }
    func setupView() {
        self.font = UIFont(name: "Courier", size: 12)
        self.textAlignment = .center
        self.placeholder = "My custom placeholder text"
        self.layer.borderWidth = 3
    }
}

查看docs.Swift.org语言指南中的属性包装。我还没有和他们合作过,但我一直在阅读他们的资料,我认为他们应该能够轻松处理这件事。这是一个很好的答案。我学得越多,就越喜欢它。