UITextField 填充

Posted

技术标签:

【中文标题】UITextField 填充【英文标题】:UITextField padding 【发布时间】:2018-05-13 23:54:04 【问题描述】:

我无法为UITextFieldleftView 属性创建填充。我现在的代码为文本创建了很好的填充,但我需要它用于 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'sX位置设置为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 的文本在填充后不会向左移动 - 因为我一直在输入

在 UITextField 和软件键盘 ios 之间提供最小填充

快速添加填充到 UITextField 的左边距

调整 UITextField 的宽度以横向填充工具栏

如何在 iOS 中为 UITextField 提供填充?

swift 如何在Swift中为UITextField设置填充。