Добавление подслоя в UITextField без раскадровки не стилизует текстовые поля - PullRequest
0 голосов
/ 04 мая 2020

Я решил научиться использовать Swift без раскадровок. Перед переключением у меня была функция в файле Utilities.swift, в которой есть функция стилизации текстовых полей, которая отлично работала, когда у меня была раскадровка.

class Utilities {

static func styleTextField(_ textfield:UITextField) {


    let bottomLine = CALayer()

    bottomLine.frame = CGRect(x: 0, y: textfield.frame.height - 2, width: textfield.frame.width, height: 2)
    bottomLine.backgroundColor = UIColor.init(red: 48/255, green: 173/255, blue: 99/255, alpha: 1).cgColor
    textfield.borderStyle = .none
    textfield.layer.addSublayer(bottomLine)

}
}

Затем в контроллере моего представления, У меня есть let firstName = UITextField(), а затем функция для Utilities.styleTextField(firstName), которая, когда у меня были раскадровки, работала нормально. После удаления раскадровок и добавления ограничений программным способом я вижу текстовое поле, но оно не используется по умолчанию без стилей.

1 Ответ

0 голосов
/ 04 мая 2020

Я предполагаю, что на данный момент вы еще не установили рамку текстового поля, поэтому CALayer не рисуется, потому что его размер равен (width: 0, height: 0).

Когда вы получаете компонент из IB, он поставляется с рамкой, которую вы установили в инструменте.

Попробуйте установить рамку перед вызовом функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...