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 内的文本末尾添加更多按钮?

ios底部的滚动视图空白

自定义UITextView的placeholder(占位文字)

iOS中键盘和UIView之间出现空白

消除UITextView上下左右边距

vue2 mint-ui loadmore(下拉刷新,上拉更多)