Я использовал множество похожих ярлыков, UIViews и текстовых полей в своем проекте. Чтобы сделать код лучше и ускорить процесс, я добавил многоразовые элементы пользовательского интерфейса в отдельную папку Extensions.swift. Например:
class Textfield: UITextField {
init(placeholder: String, type: UIKeyboardType, returnKey: UIReturnKeyType, capitalization: UITextAutocapitalizationType, align: NSTextAlignment, borderC: UIColor, textC: UIColor) {
super.init(frame: .zero)
self.placeholder = placeholder
self.keyboardType = type
self.returnKeyType = returnKey
self.autocapitalizationType = capitalization
self.borderStyle = .none
self.textAlignment = align
self.backgroundColor = .clear
self.font = UIFont(name: nexaBold, size: 25)
self.textColor = textC
self.layer.borderWidth = 1
self.layer.cornerRadius = 12
self.layer.borderColor = borderC.cgColor
self.translatesAutoresizingMaskIntoConstraints = false
if align == .left {
let padding = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 0))
self.leftView = padding
self.leftViewMode = .always
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
И в любом месте проекта я могу использовать его:
private nameField = TextField("Enter Name:", .default, .done.... etc)