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

how to stop text overlapping in textfield

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

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

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

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

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

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
    }
}

我也确实找到了另一种方法来实现这一点,即向文本字段添加偏移量。但发现当您在同一视图中有多个文本字段时,这不是一个理想的解决方案。只需将解决方案添加为其他人的参考,以便有人发现它有帮助。

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