UITextView 底部有更多文字和更多空白
Posted
技术标签:
【中文标题】UITextView 底部有更多文字和更多空白【英文标题】:More text and more blank at the bottom of UITextView 【发布时间】:2015-01-26 08:44:02 【问题描述】:UITextView 在 UITableViewController 中的一个静态单元格中,并添加代码descriptionText.sizeToFit()
使单元格高度适合文本。
单元格在输入少量文本时工作正常,当获得更多文本时,单元格底部的空白也会变得更高。
我曾尝试添加代码descriptionText.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
,也不起作用。
有什么帮助吗?谢谢。
更新: 奇怪的事情,当在 ios8 上运行时,它仍然显示空白,但是当滚动到底部以便隐藏单元格,然后滚动回到顶部时,空白消失了!这意味着它可以正常工作。有什么问题?
【问题讨论】:
【参考方案1】:您必须告诉视图不要自动调整插图:
文档说:
如果您不希望滚动视图的内容插入自动进行 调整后,自动将AdjustsScrollViewInsets 设置为NO。 (默认 automaticAdjustsScrollViewInsets 的值为 YES。)
所以你必须在你的 viewDidLoad 中添加下面这行代码:
self.automaticallyAdjustsScrollViewInsets = false;
或者您可以直接覆盖automaticallyAdjustsScrollViewInsets
- 方法并返回false
。
【讨论】:
我不得不说它也不起作用,尽管很多人说这个解决方案解决了顶部的空白。添加self.automaticallyAdjustsScrollViewInsets = false
时,顶部的单元格甚至隐藏在导航栏下。你认为这是插入的问题吗?奇怪的是,文本可以增加空白。【参考方案2】:
这是一种方法:通过计算每个 UITextView 的高度并在 heightForRowAtIndexPath:
方法中返回高度(如果需要,可以加上填充)。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
NSString *body = self.messages[indexPath.row];
CGRect rect = [body boundingRectWithSize:CGSizeMake([width of your UITextViews], CGFLOAT_MAX) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:[Font Size] context:nil];
return rect.size.height;
【讨论】:
没有。它不起作用。之前已经设置了约束,当我使用return UITableViewAutomaticDimension
时,它只显示无法显示整个文本的默认高度(30)。至此,单元格可以调整高度以显示整个文本,但也可以显示更多空白。 :-(
我用另一种方法更新了我的答案。我自己用过这个,它应该可以工作。
阿明,谢谢你的建议。运行代码时,首先我得到 'CGFLOAT_MAX' 不可用:使用 CGFloat.max,所以我使用 'height: 10000.0 代替。并且不能使用“|”迅速,所以只使用 .UsesLineFragmentOrigin。这是工作!但是...取决于字体大小。 IB中字体大小设置为14,为了获得更好的textview高度,代码中字体大小必须设置为12.5。虽然这是解决问题的更好方法,但我认为它不是最好的。
暂时使用height/1.22
处理。 :-(
奇怪的事情,当在 ios8 上运行时,它仍然显示空白,但是当滚动到底部以便隐藏单元格,然后滚动回到顶部时,空白消失了!这意味着它可以正常工作。以上是关于UITextView 底部有更多文字和更多空白的主要内容,如果未能解决你的问题,请参考以下文章
在 UITextView Objective-C 内的文本末尾添加更多按钮?