簡體   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