Вставка UITextField, с различными значениями для левого и правого

Я пытаюсь сделать клон Instagram, и я немного застрял с настройкой UITextField. Возможно, это вопрос noob, но вот он идет.

Чего я пытаюсь достичь, если у меня есть разные вставки для моего UITextField, один меньше на левой стороне и один больше на правой стороне, поэтому у меня достаточно места для кнопки Очистить от UITextField.

Я пытаюсь достичь этого:
Приложение Instagram

но ближе всего я получаю это:
Клонировать приложение

Как вы можете видеть, кнопка clear намного больше сжимается на моей версии, но я не могу обрабатывать, чтобы вставить только правую сторону немного больше, не касаясь левой.

Я использовал следующий код в своем подклассе UITextField (Swift 3):

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.insetBy(dx: 16, dy: 0)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.insetBy(dx: 16, dy: 0)
    }

Но это только позволило мне сделать это для изменения стороны стенда dx. Есть предложения? Спасибо заранее

2 ответа

  1. Это работает для меня

    let rightView = UIView(frame: CGRectMake(0, 0, 16, 16))
    textField.rightViewMode = UITextFieldViewMode.Always
    textField.rightView = rightView
    
    let leftView = UIView(frame: CGRectMake(0, 0, 20, 20))
    textField.leftViewMode = UITextFieldViewMode.Always
    textField.leftView = leftView
    

    Пусть это поможет вам.

  2. Удалось решить ее самостоятельно:

        override func textRect(forBounds bounds: CGRect) -> CGRect {
            return bounds.insetBy(dx: 16, dy: 0)
        }
    
        override func editingRect(forBounds bounds: CGRect) -> CGRect {
            return CGRect(x: bounds.origin.x + 16, y: bounds.origin.y, width: bounds.width - 56, height: bounds.height)
        }
    
        override func clearButtonRect(forBounds bounds: CGRect) -> CGRect {
            return CGRect(x: bounds.width - 36, y: bounds.origin.y, width: 16, height: bounds.height)
        }
    

    Таким образом, это работает так же, как Instagram. Он вставляет немного больше правой стороны, когда находится в режиме редактирования, и когда находится в обычном режиме он имеет вставку 16 с обеих сторон.