我正在尝试使用从sizeThatFits检索的适当高度将UITextView垂直居中。大量其他答案表明这是计算此值的最合适方法。

(请注意,我已经尝试过使用普通字符串和属性字符串,并且都表现出相同的行为)。

无论我尝试什么(即使使用属性字符串并将字体大小或行高设置为更大或更小),它总是只显示一定数量的文本字符截断(在这种情况下为3行,并且总是完全相同) )。我想念什么?

_textView.text = [_collectionDescription lowercaseString];
_textView.font = [UIFont fontLight:22];
_textView.textColor = [UIColor whiteColor];
_textView.textAlignment = NSTextAlignmentCenter;
_constraintTextViewHeight.constant = ceilf([_textView sizeThatFits:CGSizeMake(_textView.frame.size.width, FLT_MAX)].height);

[_textView setNeedsDisplay];
[_textView updateConstraints];

最佳答案

与自动版式一样,您必须执行以下操作:

[_textInfoView layoutIfNeeded];

(甚至根本不需要setNeedsDisplay)。

因此,充分发挥作用:
_textView.text = [_collectionDescription lowercaseString];
_textView.font = [UIFont fontLight:22];
_textView.textColor = [UIColor whiteColor];
_textView.textAlignment = NSTextAlignmentCenter;
_constraintTextViewHeight.constant = ceilf([_textView sizeThatFits:CGSizeMake(_textView.frame.size.width, FLT_MAX)].height);

[_textView layoutIfNeeded];
[_textView updateConstraints];

07-27 19:09