2016-05-26 41 views
1

我已经在编程前以textfield开始之前应用图标的方式,但主要担心的是在图标之前应用填充。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 

} 

但边框和图标之间的所有方式的空间就非常少了。

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

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

回答

2
  1. 尝试创建一个UIView(比如内容查看)和一个UIImageView(比如说leftImage
  2. 设置leftImage帧,因为它是从的X(即)如内容查看 'contenView S结构是(0,0,25,20)则设置leftImage' 对准10分离开S结构如(10,0,15,20)

  3. 然后加入leftImage作为子视图内容查看

  4. 现在是简单地将contentView作为文本字段的左侧视图。

    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输出:

    enter image description here

    最终输出:

    enter image description here

0

您可以带一个宽度为20的UIView,您可以将leftVeiw添加到此视图。现在将此视图设置为leftView

0

你可以很容易调整通过继承空间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 
} 

} 
0

你根本就这一条线

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