Уменьшить разрыв между левым обзором и курсором в текстовом поле - PullRequest
0 голосов
/ 29 сентября 2018

Я использую приведенный ниже код для добавления левого вида в текстовое поле:

func setUI()
{
    txtUserCode.leftViewMode = .always
    let label = UILabel(frame: CGRect(x: 7, y: 0, width: 18, height: txtUserCode.frame.size.height))
    label.text = "@"
    txtUserCode.leftView?.frame = CGRect(x: 0, y: 0, width: 18, height: txtUserCode.frame.size.height)
    txtUserCode.leftView = label
    label.backgroundColor = UIColor.green
    txtUserCode.leftView?.backgroundColor = UIColor.red
}

Но проблема в том, что между левым видом и курсором есть зазор, который можно увидеть на снимке экрана.

enter image description here

Если между курсором и левым обзором имеется небольшой зазор, вы можете видеть между 'premB' и '@'

Любойпомощь или предложение будут полезны.

1 Ответ

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

Обновите свой код до ниже.

func setUI()
{
    txtUserCode.leftViewMode = .always
    let label = UILabel(frame: CGRect(x: 7, y: 0, width: 18, height: txtUserCode.frame.size.height))
    label.text = "@"
    label.sizeToFit()
    label.frame = CGRect(x: 7, y: 0, width: label.frame.size.width, height: txtUserCode.frame.size.height)
    txtUserCode.leftView?.frame = CGRect(x: 0, y: 0, width: label.frame.size.width, height: txtUserCode.frame.size.height)
    txtUserCode.leftView = label
    label.backgroundColor = UIColor.green
    txtUserCode.leftView?.backgroundColor = UIColor.red
}

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

Добавьте нижеи попробуйте еще раз.

txtUserCode.borderStyle = .none
...