Swift UITextField图标位置设置

Gun*_*tel 6 uitextfield swift

使用在UITextField中添加图标

var leftImageView = UIImageView()
leftImageView.image = leftImage
textField.leftView = leftImageView
textField.leftViewMode = UITextFieldViewMode.Always
leftImageView.frame = CGRectMake(15, 10, 15, 20)
textField.addSubview(leftImageView)
Run Code Online (Sandbox Code Playgroud)

o/p为此图像接近文本字段边框

我发现解决方案就像从上面的代码中删除此代码

textField.leftView = leftImageView
Run Code Online (Sandbox Code Playgroud)

它可以正确地进行图标对齐,但每当开始在这样的图标上编辑文本字段文本时 在此输入图像描述

我想要这样的o/p

在此输入图像描述

hen*_*nes 12

首先,您绝对不应将图像作为子视图添加到标签中.这足以设置leftView属性.

textField.addSubview(leftImageView) // Delete this line
Run Code Online (Sandbox Code Playgroud)

其次,忽略应用于左视图框架的任何x或y偏移.文本字段仅关注视图的大小.如果要在图像周围添加填充,一个选项是使用容器视图并将图像视图放在其中.

let leftImageView = UIImageView()
leftImageView.image = leftImage

let leftView = UIView()
leftView.addSubview(leftImageView)

leftView.frame = CGRectMake(0, 0, 30, 20)
leftImageView.frame = CGRectMake(0, 0, 15, 20)

textField.leftView = leftView
Run Code Online (Sandbox Code Playgroud)

另一种选择是子类化UITextField和覆盖leftViewRectForBounds.