当您尝试在UITextView上执行sizeThatFits
时,如果您将所述UITextView的高度设置为结果,那么它太短了!这个回答:
UITextView Content Size too Short
如果你检查文本视图的contentInset
属性,contentInset
全部都设置为零,那么似乎也不尽如人意。
答案 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
中。这很烦人,因为视图已经显示出来了,但我通过淡化少数几个来解决它,以获得更好的美学效果。