У меня есть UITextField
с использованием системного шрифта с применением кернинга.
Проблема
- При добавлении начальных пробельных символов в пустое полеширина каждого символа пробела значительно меньше, чем должна быть.
- При добавлении непробельного символа после всех начальных пробелов ширина каждого символа пробела возвращается к ожидаемому размеру.
- При удалении всех символов, добавленных после начальных пробельных символов, текстовое поле возвращается в состояние проблемы из # 1.
Результатом всего этого является то, чтоПо всей видимости, курсор поля неравномерно перемещается между состоянием № 2 и другими состояниями.
Код
Добавление текстового поля через раскадровку приведет к зависанию приложения при запуске вТренажер. Нажатие кнопки «Отладить иерархию представлений» во время работы приложения может привести к ошибке «Невозможно записать иерархию представлений».
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField! {
didSet {
textField.defaultTextAttributes = [.kern: 1]
}
}
}
Поэтому добавьте текстовое поле в код, чтобы получить поведение, показанное ниже:
class ViewController: UIViewController {
let textField: UITextField = {
let textField = UITextField()
textField.defaultTextAttributes = [.kern: 1]
return textField
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(textField)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
textField.frame.size = CGSize(width: 280, height: 44)
textField.center = view.center
}
}
Видео