Это может быть проблема рендеринга со стилем шрифта или ограниченным размером рамки для обоих видов. Попробуйте настроить y-position
или height
для левой метки.
Это не точный ответ, который вы ищете. Но это может решить вашу проблему.
override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(x: 0, y: 0, width: 40, height: (bounds.height - 4))
}
или
override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(x: 0, y: -2, width: 40, height: bounds.height)
}
Я пробовал это:
class LeftViewTextfield: UITextField {
override init(frame: CGRect) {
super.init(frame: frame)
leftViewMode = .always
let label = UILabel()
label.backgroundColor = UIColor.yellow
label.text = "Hello"
label.font = UIFont.systemFont(ofSize: 16)
leftView = label
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(x: 0, y: -0.5, width: 40, height: bounds.height)
}
}
class TestViewController: UIViewController {
var textField: LeftViewTextfield?
override func viewDidLoad() {
super.viewDidLoad()
setupTextField()
}
func setupTextField() -> Void {
textField = LeftViewTextfield(frame: CGRect(x: 40, y: 40, width: 100, height: 40))
textField?.text = "Hello"
textField?.font = UIFont.systemFont(ofSize: 16)
textField?.backgroundColor = UIColor.orange
self.view.addSubview(textField!)
}
}
Результат: