文本为空字符串时,自动布局UILabel的动态高度计算不起作用?

Posted

技术标签:

【中文标题】文本为空字符串时,自动布局UILabel的动态高度计算不起作用?【英文标题】:autolayout UILabel's dynamic height calculation doesn't work when text is empty string? 【发布时间】:2015-12-30 12:55:04 【问题描述】:

ios 8 中,我在 UITableViewCell 中有一个 UILabel。我希望单元格根据UILabel 的文本具有动态高度。它工作正常。 但是当文本为空字符串时,它似乎有一个默认高度,但我希望它为零。

这是我所做的:

    使用masonry 设置单元格的约束。设置top, bottom 约束。 设置tableView.estimatedHeightheightForRow 委托方法返回UITableViewAutomaticDimension

那么我做错了什么吗?有什么帮助吗?

【问题讨论】:

[单元集NeedsUpdateConstraints]; [单元格更新约束如果需要];添加这两种方法还垂直设置 labelcentral 所以你不需要给顶部和底部空间,所以你必须将前导空间设置为你需要的边距 【参考方案1】:

将 heightForRowAtIndexPath 的代码更改为此。这行得通!

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

   NSString *text = [yourDataSourceArray objectAtIndex:indexPath.row];
   if(text.length > 0 )
     return UITableViewAutomaticDimension;
   

   return 0;

【讨论】:

【参考方案2】:
[yourLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisVertical];
[yourLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisVertical];

将标签 V compress 设置为高优先级

【讨论】:

以上是关于文本为空字符串时,自动布局UILabel的动态高度计算不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

获取动态UILabel的高度

使用自动布局自定义集合视图单元格的动态高度

具有比例宽度和文本驱动高度的动态 UILabel

自动布局 4 个 UILabel,根据其内容/文本垂直高度

如何使用自动布局将两个具有动态高度的 UILabel 与 UICollectionViewCell 的底部对齐

为自动布局设置数字 UILabel 以正确计算内在内容大小