0

我以前使用过这个代码范围:

override func textRect(forBounds bounds: CGRect) -> CGRect {
    super.textRect(forBounds: bounds)
    return UIEdgeInsetsInsetRect(bounds, UIEdgeInsets(top: 0,left: 10, bottom: 0, right: 10))
}

但是它在 Xcode Swift Update 之后给出了一个错误。这是一个错误:

'UIEdgeInsetsInsetRect' has been replaced by instance method 'CGRect.inset(by:)'

然后我写了这个:

override func textRect(forBounds bounds: CGRect) -> CGRect {
    super.textRect(forBounds: bounds)
    var animationRect = frame.inset(by: UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 10))
    return animationRect
}

但是上面的代码不会影响到文本字段。我应该写什么来给左边的填充?

4

1 回答 1

1

返回这个:

override func textRect(forBounds bounds: CGRect) -> CGRect { 
   return bounds.inset(by: UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 10)) 
} 

我刚刚在情节提要中尝试了 MyTextField 自定义类,它似乎确实有效。

要在评论中提出您的问题:

正如您在此处看到的textRect 文档editorRect 返回可以显示可编辑文本的矩形,而不是这个,textRect 返回计算的绘图矩形。检查上一个链接,它将更加详尽。

于 2018-09-21T11:39:02.453 回答