【发布时间】:2019-03-16 11:17:42
【问题描述】:
我曾尝试使用以下代码创建自动调整 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)
}
使用此解决方案,它的宽度卡在第一个字符上,每行只有一个字符。我该如何解决这个问题?
【问题讨论】:
-
这是因为在
sizeThatFits方法中,您告诉它的最大宽度是当前宽度,因此它只是适应高度。您是否试图让它水平扩展,直到某个点然后垂直扩展? -
使用Textview的高度限制可以做到这一点。
-
在调整 textview self.view.layoutIfNeeded() 大小后添加这一行。
-
@UpholderOfTruth 是的,-Rakesha Shastri 不,谢谢,-KKRocks 如何使用约束来做到这一点?
标签: ios swift xcode uitextview