swift
- 给UITextField 设置了 leftView,但是不显示
- 设置UITextField的光标输入位置
- 设置UITextField的leftView,但是没显示,视图层上也没有
let iamgeView = UIImageView(frame: CGRect(x: 8, y: 8, width: self.frame.size.height - 16, height: self.frame.size.height - 16))
self.leftView = iamgeView
self.leftViewMode = .always
首先设置 leftViewMode = .always
其次需要重写 leftViewRect(forBounds bounds: CGRect) -> CGRect
方法
override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
if let view = self.leftView {
return view.frame
}
return .zero
}
如此,leftView 就会显示出来了
- 如何调整光标和输入位置
添加了 leftView,我们希望输入的时候,光标从leftView右侧开始,而不是从最左侧开始。
需要重写 editingRect(forBounds bounds: CGRect) -> CGRect
来调节光标输入位置
override func editingRect(forBounds bounds: CGRect) -> CGRect {
if let view = self.leftView {
return CGRect(x: view.frame.maxX + 8, y: bounds.minY, width: bounds.width, height: bounds.height)
}
return CGRect(x: bounds.minX + 8, y: bounds.minY, width: bounds.width - 8, height: bounds.height)
}
需要注意的是,当向右侧移动了一些距离之后,内容显示的宽度应该相应的也减少,否则,内容就超出了TextField。
如此,leftView和光标输入位置的问题就都解决了,如下图: