删除边框时会修剪UITextFiled的内容

时间:2018-02-06 04:06:28

标签: ios swift uitextfield border

对于我的UITextField,我希望删除边框。因此,我尝试将其边框颜色更改为背景颜色(边框宽度为1),但这样做时,角落处会看到微弱的边框线。接下来,我在属性检查器中将边框样式设置为none。当我运行应用程序时,边框消失了。但是,当在其中输入文本时,文本将在左侧裁剪,如图所示。我尝试在文本字段中添加填充视图,但它没有解决问题。我该如何解决这个问题?

enter image description here

修改

enter image description here 文本字段后跟一个标签。由于我希望标签遵循文本字段内容,因此我没有设置文本字段的宽度。这显示在图像中。当我使用 leftViewMode 添加填充视图作为始终时,设计未呈现,我收到控制台消息:

- 在仅变换图层中更改属性masksToBounds将无效

根据@ Surjeet链接中的一个答案,我尝试将textField扩展为:

class CustomTextField: UITextField {

    required init?(coder aDecoder: NSCoder){
        super.init(coder: aDecoder)
    }

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(x: bounds.origin.x + 10, y: bounds.origin.y, width: bounds.size.width, height: bounds.size.height)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return self.textRect(forBounds: bounds)
    }
}

但问题仍未解决。

2 个答案:

答案 0 :(得分:0)

您可以为文本字段添加左侧填充,您的问题应该得到解决。

Swift 4

        let paddingView: UIView = UIView.init(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
        textField.leftView = paddingView
        textField.leftViewMode = .always

答案 1 :(得分:0)

text_field.setLeftPaddingPoints(10)

text_field.setRightPaddingPoints(10)


extension UITextField {

    func setLeftPaddingPoints(_ amount:CGFloat){
       let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
       self.leftView = paddingView
       self.leftViewMode = .always
    }
    func setRightPaddingPoints(_ amount:CGFloat) {
      let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
      self.rightView = paddingView
      self.rightViewMode = .always
    }
}