UITextField, textRect, Xcode Version 10.0, Deployment Target 12.0, Swift 4.2 - PullRequest
0 голосов
/ 21 сентября 2018

Я использовал эту область кода ранее:

override func textRect(forBounds bounds: CGRect) -> CGRect {
    super.textRect(forBounds: bounds)
    return UIEdgeInsetsInsetRect(bounds, UIEdgeInsets(top: 0,left: 10, bottom: 0, right: 10))
}

Но после Xcode, Swift Update выдает ошибку.Вот ошибка:

'UIEdgeInsetsInsetRect' has been replaced by instance method 'CGRect.inset(by:)'

А потом я написал это:

override func textRect(forBounds bounds: CGRect) -> CGRect {
    super.textRect(forBounds: bounds)
    var animationRect = frame.inset(by: UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 10))
    return animationRect
}

Но приведенный выше код не влияет на текстовое поле.Что я должен написать, чтобы дать отступ слева?

1 Ответ

0 голосов
/ 21 сентября 2018

верните это:

override func textRect(forBounds bounds: CGRect) -> CGRect { 
   return bounds.inset(by: UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 10)) 
} 

Я только что попробовал добавить пользовательский класс MyTextField в раскадровку, и, похоже, он работает.

Чтобы задать вопрос в комментариях:

Как вы можете видеть здесь документация textRect editRect возвращает прямоугольник, в котором может отображаться редактируемый текст, вместо этого textRect возвращает вычисленный прямоугольник рисования.Проверьте предыдущую ссылку, она будет более исчерпывающей.

...