当您尝试sizeThatFits
在 UITextView 上执行操作时,如果您将所述 UITextView 的高度设置为结果,那么它太短了!这个答案:
似乎也不足,因为如果您检查contentInset
文本视图的属性,contentInset
则全部设置为零。
当您尝试sizeThatFits
在 UITextView 上执行操作时,如果您将所述 UITextView 的高度设置为结果,那么它太短了!这个答案:
似乎也不足,因为如果您检查contentInset
文本视图的属性,contentInset
则全部设置为零。
它使用的密钥,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
. 这很烦人,因为视图已经显示,但我通过淡入少数几个来解决它以获得更好的美感。