UITextField的文本插入

时间:2015-10-10 05:58:39

标签: ios uitextfield uikit swift2

我看过这篇文章Text inset for UITextField?,但仍然无法弄明白。

我想要一个80.0高的UITextField。我希望文本在UITextField的顶部40.0以下,20.0高,在文本下面留下20.0作为填充。我目前的代码是。

let textBounds: CGRect = CGRect(x: 0, y: 40, width: self.width, height: 20)
self.editingRectForBounds(textBounds)
self.textRectForBounds(textBounds)

UITextField是子类,目前我认为文本在上方和下方有30.0填充,高度为20.0或垂直居中于UITextField

1 个答案:

答案 0 :(得分:0)

我已经重写了你的代码以使用UITextField子类:

class myTextField: UITextField {
    var textBounds: CGRect = CGRectZero

    override init(frame: CGRect) {
        super.init(frame: frame)
        textBounds = CGRectMake(0, 40, self.frame.width, 20)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        return textBounds
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        return textBounds
    }    
}

并添加了一个示例,说明如何将其添加到您的视图中:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let textField = myTextField(frame: CGRectMake(20, 64, 200, 50))
        textField.text = "Hello World"

         // Show a border to visualize the frame.
        textField.layer.borderColor = UIColor.redColor().CGColor
        textField.layer.borderWidth = 1

        view.addSubview(textField)
    }

}

UITextField子类可以添加到视图控制器文件或单独的文件中。这是你的选择。