繁体   English   中英

TextField 图标前的填充

[英]Padding before TextField Icon

我得到了在textfield以编程方式启动之前应用图标的方法,但主要关注的是在图标之前应用填充。

因为它只是触摸文本字段的边框。

我像下面这样编程:

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

}

但是边框和图标之间的一路空间非常小。

有没有办法在它们之间进行填充?

请让我知道是否有任何方法。

  1. 尝试创建一个UIView(比如contentView )和一个UIImageView(比如说leftImage
  2. 设置leftImage框架,因为它与contenViewx (即)对齐10个点,如果contentView的框架为( 0,0,25,20 ),则将leftImage的框架设置为( 10,0,15,20

  3. 然后将leftImage作为子视图添加到contentView

  4. 现在很简单,将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输出:

    在此输入图像描述

    最终产出:

    在此输入图像描述

你可以使用一个宽度为20的UIView ,你可以将leftVeiw添加到这个视图中。 现在将此视图设置为leftView

您可以通过继承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);

类视图控制器: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