Есть ли способ ограничить расширение
Нет.Так что это был плохой подход с самого начала.Вместо расширения используйте подкласс.
Кроме того, переопределение в расширении недопустимо.Это никогда не должно было работать вообще.
Кроме того, запрещается переопределять метод draw
текстового поля.И даже если бы это было законно, было бы неправильно делать это, потому что вы не рисуете;draw
вызывается для рисования много раз, но это единственное изменение, которое вы хотите сделать один раз в свойствах текстового поля.Когда вы пишете свой подкласс, переопределите инициализаторы текстового поля.
Итак, давайте предположим, что все ваши текстовые поля взяты из раскадровки (как ваш dateTextField
. Тогда вы бы написали:
class BorderedTextField : UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
self.layer.cornerRadius = 9.0
self.layer.borderWidth = 0.5
self.layer.borderColor = UIColor(red: 0.0/255.0, green: 122.0/255.0, blue: 255.0/255.0, alpha: 1.0).cgColor
self.layer.masksToBounds = true
}
}
Затем используйте инспектор удостоверений в раскадровке, чтобы превратить текстовое поле из UITextField в BorderedTextField.
Вы также можете использовать атрибут @IBInspectable
, чтобы сделать возможным установить цвет границы в качестве параметра в раскадровкесамо по себе. Но это выходит за рамки вопроса.