【发布时间】:2018-01-24 12:36:32
【问题描述】:
【问题讨论】:
-
显示你已有的代码
-
能否提供截图
-
没有代码,只有文本字段。我已经编辑并上传了截图
【问题讨论】:
最好的办法是将您的UITextField 更改为UITextView。这是一个我非常喜欢使用的函数,用于这种自动调整大小的技术,你会在 Apples iMessage 之类的产品中看到:
func containerViewHeight() {
let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
containerView.heightAnchor.constraint(equalToConstant: size.height + 24)
self.textView.setContentOffset(.zero, animated: false)
}
您首先需要在 viewDidLoad 中调用此函数:
override func viewDidLoad() {
self.containerViewHeight()
}
除此之外,您还需要通过在文件顶部对其进行子类化来符合 UITextViewDelegate 方法,如下所示:
class YourViewController: UIViewController, UITextViewDelegate
添加此 AND 后,您在 viewDidLoad 中使用了 self.textView.delegate = self:
override func viewDidLoad() {
self.textView.delegate = self
}
然后您就可以对该 textView 使用 textViewDidChange 方法,所以您最后要在类中添加的是:
func textViewDidChange(_ textView: UITextView) {
self.containerViewHeight()
}
【讨论】: