插入UITextField,左右不同的值

时间:2016-09-28 17:21:35

标签: ios swift uitextfield

我正在尝试克隆Instagram,我对UITextField定制有点困惑。也许这是一个菜鸟问题,但现在就是这样。

如果要为我的UITextField设置不同的插图,我想要实现的目标,左边一个较小,右边一个较大,所以我有足够的空间用于UITextField的清除按钮。

我正在努力实现这个目标: Instagram app

但我得到的最接近的是: Clone app

正如你所看到的那样,清晰的按钮对我的版本来说更加紧迫,但我无法处理更多的右侧,而不会触及左侧。

我在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 个答案:

答案 0 :(得分:0)

这对我有用

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

它可以帮助你。

答案 1 :(得分:0)

由我自己解决:

    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一样。当它处于编辑模式时,它会在右侧插入一点点,当处于正常模式时,它的两侧都有一个插入点。