【问题标题】:Padding before TextField IconTextField 图标前的填充
【发布时间】:2016-09-23 23:35:54
【问题描述】:

我有办法在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

}

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

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

如果有什么办法,请告诉我。

【问题讨论】:

    标签: ios swift swift2 padding textfield


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您只需一行完成此操作

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

        【讨论】:

          【解决方案4】:
          1. 尝试创建一个 UIView(比如 contentView)和一个 UIImageView(比如 leftImage
          2. 设置 leftImage 框架,使其与 contenViewx(即)10 点对齐,如果 contentView 的 frame 为 (0, 0, 25, 20) 然后设置 leftImage 的 frame 为 (10, 0, 15, 20)

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

          4. 现在很简单,添加 contentView 作为 textfield 的 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 输出:

            最终输出:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-17
            • 1970-01-01
            • 2020-10-20
            相关资源
            最近更新 更多