UITextField内边距

3

我在为UITextFieldleftView属性创建内边距时遇到了问题。目前的代码可以为文本创建内边距,但我需要为图像视图创建内边距。

UITextField子类方法:

  • Notice x position of paddingView frame doesn't extend view to the right like expected.

    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
    }
    
结果:

enter image description here

这是一个结果展示图。

所以你想要为搜索图标添加填充吗? - technerd
@technerd 是的。我原以为将 paddingView 的框架的 x 值设置为此可以实现,但事实并非如此。 - user6354073
1
尝试设置ImageView框架的x位置,而不是paddingView - technerd
2个回答

3

您需要更改函数,只需设置imageView的框架并将paddingViewX位置设置为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
}

0

你需要重写以下方法: override func leftViewRect(forBounds bounds: CGRect) -> CGRect


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接