我正在尝试克隆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做这件事。有什么建议吗?提前致谢
答案 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一样。当它处于编辑模式时,它会在右侧插入一点点,当处于正常模式时,它的两侧都有一个插入点。