调整 UITableViewCell 中的 UILabel 大小在渲染前未更新

Posted

技术标签:

【中文标题】调整 UITableViewCell 中的 UILabel 大小在渲染前未更新【英文标题】:Resizing UILabel in UITableViewCell not updating before render 【发布时间】:2014-02-16 05:23:51 【问题描述】:

我有一个可重复使用的 UITableViewCell 作为我的故事板的一部分,我需要在设置文本后调整 sizeToFit。为此,我在单元格类的 layoutSubviews 方法中执行 sizeToFit。

但问题是我没有看到任何更新,我尝试设置 needsDisplay/Layout 但在需要完全重新渲染单元格之前我看不到任何更新(向下和向上滚动时)或者当我开始和结束对 tableView 的更新时)。

【问题讨论】:

【参考方案1】:

我已经设法通过为 UILabel 创建一个类然后在 layoutSubviews 中为我的子类 UILabel 执行需求来解决这个问题。

【讨论】:

【参考方案2】:

如果您使用自动布局,请尝试在单元格的layoutSubviews 方法中设置标签的preferredMaxLayoutWidth 属性。设置该属性后,您需要再次调用[super layoutSubviews]

- (void)layoutSubviews 

    [super layoutSubviews];
    // Make sure that label's text is set by now
    self.label.preferredMaxLayoutWidth = self.label.frame.size.width;
    [super layoutSubviews];

【讨论】:

以上是关于调整 UITableViewCell 中的 UILabel 大小在渲染前未更新的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UITableViewCell 中的 UIImageView - 始终调整为图像大小

自调整大小的 UITableViewCell 中的水平 UILabels

自我调整大小的 UITableViewCell 中的 UIlabel 和 UIView 高度计算

如何根据 UITableViewCell 中的内容调整水平 UICollectionView 的高度

调整 UITableViewCell 中的 UILabel 大小在渲染前未更新

调整大小后 UITableViewCell 中的 UIImageView 分辨率低