要防止UITextField扩展其宽度,但允许其高度与文本内容自适应,可以使用以下方法:
以下是一个示例代码:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// 计算文本内容的宽度
let text = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) ?? ""
let textSize = text.size(withAttributes: [NSAttributedString.Key.font: textField.font ?? UIFont.systemFont(ofSize: 17)])
// 设置UITextField的宽度为文本内容的宽度
textField.frame.size.width = textSize.width
return true
}
}
这样,UITextField的宽度将根据文本内容的长度进行自适应,但不会扩展宽度。同时,高度仍然可以根据文本内容自动调整。
领取专属 10元无门槛券
手把手带您无忧上云