UITextView sizeThatFits给出了一个在Swift中太短的答案

时间:2015-03-18 12:50:22

标签: swift uitextview uiedgeinsets

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

UITextView Content Size too Short

如果你检查文本视图的contentInset属性,contentInset全部都设置为零,那么似乎也不尽如人意。

1 个答案:

答案 0 :(得分:14)

它使用的密钥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中。这很烦人,因为视图已经显示出来了,但我通过淡化少数几个来解决它,以获得更好的美学效果。