UITextField 填充
Posted
技术标签:
【中文标题】UITextField 填充【英文标题】:UITextField padding 【发布时间】:2018-05-13 23:54:04 【问题描述】:我无法为UITextField
的leftView
属性创建填充。我现在的代码为文本创建了很好的填充,但我需要它用于 imageView。
UITextField 子类方法:
注意paddingView
框架的x
位置没有像预期的那样向右延伸视图。
func setLeftView(imageView: UIImageView, withPadding padding: CGFloat)
let height = imageView.frame.height
let width = imageView.frame.width + padding
let paddingView = UIView(frame: CGRect(x: 36, y: 0, width: width, height: height))
paddingView.addSubview(imageView)
self.leftView = paddingView
self.leftViewMode = .always
结果:
【问题讨论】:
所以你想要填充搜索图标? @technerd 是的。我认为使paddingView
的框架的x
值可以做到这一点,但事实并非如此。
尝试设置x
位置的Imageview
框架而不是paddingView
【参考方案1】:
你需要修改你的函数,设置imageView
的frame并将paddingView's
的X位置设置为0
func setLeftView(imageView: UIImageView, withPadding padding: CGFloat)
let height = imageView.frame.height
let width = imageView.frame.width + padding
// Set x position to 0
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: width, height: height))
/// You need to set frame of imageView so put this line
imageView.frame = CGRect(x: padding, y: 0, width: imageView.frame.width, height: height)
paddingView.addSubview(imageView)
self.leftView = paddingView
self.leftViewMode = .always
【讨论】:
【参考方案2】:您必须覆盖: 覆盖 func leftViewRect(forBounds bounds: CGRect) -> CGRect
【讨论】:
以上是关于UITextField 填充的主要内容,如果未能解决你的问题,请参考以下文章
UITextfield 的文本在填充后不会向左移动 - 因为我一直在输入