如何在文本字段中停止文本重叠

时间:2015-05-21 17:11:26

标签: ios swift uitextfield

我在iOS应用中为textfield创建了一个图像。但文字似乎与图像重叠。有没有办法防止这种情况或以另一种方式实现相同的设计。以下是我面临的问题的图像。

this happens only for long texts.

有没有办法让文字从文本字段中的特定位置开始?

3 个答案:

答案 0 :(得分:2)

一种解决方案是使您的UITextField成为UITextField的子类。这将允许您覆盖textRectForBounds: - 现在负责文本的去向。

特别是,在您的覆盖中,调用super以获取原始矩形。现在增加原点的x分量一定量,以便为图像留出空间,并将尺寸的宽度减少相同的量。返回结果修改后的矩形,你就完成了。

答案 1 :(得分:1)

这将允许您更改文本所在的矩形:

class MyCustomTextField : UITextField {
    var leftMargin : CGFloat = 10.0

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        var newBounds = bounds
        newBounds.origin.x += leftMargin
        return newBounds
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        var newBounds = bounds
        newBounds.origin.x += leftMargin
        return newBounds
    }
}

答案 2 :(得分:0)

我还找到了通过向文本字段添加偏移来实现此目的的另一种方法。但是当你在同一个视图中有多个文本字段时,发现这不是一个理想的解决方案。只需将解决方案添加为其他人的参考,以便有人发现它有用。

let paddingView = UIView(frame: CGRectMake(0, 0, 60, self.yourTextField.frame.height))
yourTextField.leftView = paddingView
yourTextField.leftViewMode = UITextFieldViewMode.Always