如何调整UITextView的大小,当达到一定值时会根据内容和固定宽度自动调整其宽度和高度?

时间:2019-03-16 11:17:43

标签: ios swift xcode uitextview

我曾尝试使用以下代码创建自动调整大小的UITextView。

func textViewDidChange(_ textView: UITextView) {
     let fixedWidth = textView.frame.size.width
     let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
     textView.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)

}

当我键入第一个字符时,它不会调整字符的宽度。我尝试过的另一个解决方案是这个。

 func textViewDidChange(_ textView: UITextView) {
     let fixedWidth = textView.frame.size.width
     let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
     textView.frame.size = CGSize(width: newSize.width, height: newSize.height)

}

此宽度固定在第一个字符上,此解决方案每行仅一个字符。我该如何解决?

1 个答案:

答案 0 :(得分:0)

尝试一下:

    let maximumWidth: CGFloat = 200 // Change as appropriate for your use.
    let newSize = textView.sizeThatFits(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
    textView.frame.size = CGSize(width: newSize.width, height: newSize.height)

您将需要想出一种方法来确定最大宽度,因为我现在已经对其进行了硬编码。

这会将UITextView水平扩展到200点,然后开始垂直扩展。