简体   繁体   English

TextField 图标前的填充

[英]Padding before TextField Icon

I got the way to apply an icon just before the textfield starts programmatically but the main concern was that to apply padding just before the icon.我得到了在textfield以编程方式启动之前应用图标的方法,但主要关注的是在图标之前应用填充。

As it is just touching the border of the textfield.因为它只是触摸文本字段的边框。

I program it like below:我像下面这样编程:

override func viewWillAppear(animated: Bool) {

    // Email Icon on left of email Text Field
    let imageView1 = UIImageView()
    let image1 = UIImage(named: "Message.png")
    imageView1.image = image1
    imageView1.frame = CGRectMake(100, 0, 10, 10)
    emailTextField.leftView = imageView1
    emailTextField.leftViewMode = UITextFieldViewMode.Always

    // Password Icon on left of pass Text Field
    let imageView2 = UIImageView()
    let image2 = UIImage(named: "Lock.png")
    imageView2.image = image2
    imageView2.frame = CGRectMake(100, 0, 10, 10)
    passwordTextField.leftView = imageView2
    passwordTextField.leftViewMode = UITextFieldViewMode.Always

}

But all the way space between the border and the icon is very less.但是边框和图标之间的一路空间非常小。

Is there any way to make a padding between them?有没有办法在它们之间进行填充?

Please let me know if there is any way.请让我知道是否有任何方法。

  1. Try creating a UIView(say contentView ) and a UIImageView(say leftImage ) 尝试创建一个UIView(比如contentView )和一个UIImageView(比如说leftImage
  2. Set leftImage frame as it is aligned 10 points away from contenView 's x (ie) if contentView 's frame is (0, 0, 25, 20) then set leftImage 's frame as (10, 0, 15, 20) 设置leftImage框架,因为它与contenViewx (即)对齐10个点,如果contentView的框架为( 0,0,25,20 ),则将leftImage的框架设置为( 10,0,15,20

  3. Then add leftImage as subview to contentView 然后将leftImage作为子视图添加到contentView

  4. Now it's simple add contentView as leftView of textfield. 现在很简单,将contentView添加为textView的leftView。

     let leftImage = UIImageView() let image1 = UIImage(named: "Key") leftImage.image = image1 let contentView = UIView() contentView.addSubview(leftImage) contentView.frame = CGRectMake(0, 0, 25, 20) leftImage.frame = CGRectMake(10, 0, 25, 20) passwordTextField.leftView = contentView passwordTextField.leftViewMode = UITextFieldViewMode.Always 

    Previops output: Previops输出:

    在此输入图像描述

    Final Output: 最终产出:

    在此输入图像描述

You can take one UIView of width 20 and you can add leftVeiw to this view. 你可以使用一个宽度为20的UIView ,你可以将leftVeiw添加到这个视图中。 Now set this view as leftView . 现在将此视图设置为leftView

you can easy to adjust the space by inherit the UITextField 您可以通过继承UITextField轻松调整空间

class field: UITextField {

override func leftViewRectForBounds(bounds: CGRect) -> CGRect {
    var rect = bounds
    rect.origin.x -= 10
    return rect
}

override func textRectForBounds(bounds: CGRect) -> CGRect {
    var rect = bounds
    rect.origin.x -= 10
    return rect
}

}

您只需在一行中执行此操作即可

textfield.layer.sublayerTransform = CATransform3DMakeTranslation(10.0f, 0.0f, 0.0f);

class ViewController: UIViewController {类视图控制器:UIViewController {

@IBOutlet weak var passTextfield: UITextField!
@IBOutlet weak var emailTextfield: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    let emailImage = UIImage(named:"email")
    addLeftImageTo(txtfield: emailTextfield, andImage:emailImage!)
    
    let passwordImage = UIImage(named:"password")
    addLeftImageTo(txtfield: passTextfield, andImage:passwordImage!)
}

func addLeftImageTo(txtfield:UITextField,andImage img:UIImage) {
    let leftImageView=UIImageView(frame:CGRect(x:10, y: 0, width: 25, height: 20))
    leftImageView.image=img
    
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 35, height: 20))
   view.addSubview(leftImageView)
    
    txtfield.leftView=view
    txtfield.leftViewMode = .always

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM