我有一个UITableViewCell子类,其中包含一个关闭滚动的UITextView。我在我的表视图单元格layoutSubviews方法中设置了这样的框架:
CGRect frame = self.bodyTextView.frame;
CGSize size = self.bodyTextView.contentSize;
frame.size = size;
self.bodyTextView.frame = frame;
这一段时间以来一直运作良好,但我注意到,如果我的文字数量特别多,那么文字就会被切断。我已将文本视图框背景颜色设置为橙色,以便我可以验证框架是否正确设置。这是一个例子(我只显示文本视图的底部):
框架是基于文本的正确尺寸(在这种情况下为1019个点),但文本在文本视图的底部之前停止。我还看到文本在一条线的中途被切断(即最后一行文本的文本在水平方向中途切断)。有谁知道这里发生了什么?
其他几点:
答案 0 :(得分:4)
根据this和类似的答案,问题可能是“只有在将UITextView添加到视图后才能使用正确的contentSize ...在此之前它等于frame.size”< / p>
我建议您以不同的方式计算高度,例如-sizeWithFont:或-sizeTofit
答案 1 :(得分:1)
使用它来获取textSize
// find the text width; so that btn width can be calculate
CGSize textSize = [@"YOUR TEXT" sizeWithFont:[UIFont fontWithName:@"Arial" size:20.0]
constrainedToSize:CGSizeMake(320.0f, 99999.0f)
lineBreakMode:UILineBreakModeWordWrap];
然后使用它设置高度:
CGRect frame = self.bodyTextView.frame;
frame.size = textSize;
self.bodyTextView.frame = frame;
希望它对你有所帮助。
答案 2 :(得分:0)
我遇到了同样的问题,并解决了它在textView填充上的问题(在swift5中):
yourTextView.textContainerInset = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
希望它可以帮助:)