6

当您尝试sizeThatFits在 UITextView 上执行操作时,如果您将所述 UITextView 的高度设置为结果,那么它太短了!这个答案:

UITextView 内容大小太短

似乎也不足,因为如果您检查contentInset文本视图的属性,contentInset则全部设置为零。

4

1 回答 1

17

它使用的密钥,textContainerInset而不是contentInset. 这将为您提供您正在寻找的顶部和底部的适当缓冲区。所以,你会得到类似的东西:

textView.text = "Some multiline text";
let size: CGSize = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, CGFloat.max));
let insets: UIEdgeInsets = textView.textContainerInset; 
textViewHeight.constant = size.height + insets.top + insets.bottom;

还需要注意的是,必须在渲染 UITextView 之后调用此方法。换句话说,我最初是viewDidLoad在控制器的方法中调整它的大小,而实际上它必须在viewDidAppear. 这很烦人,因为视图已经显示,但我通过淡入少数几个来解决它以获得更好的美感。

于 2015-03-18T12:50:21.537 回答