在渲染之前不要更新UITableViewCell中的UILabel大小

时间:2014-02-16 05:23:52

标签: ios uitableview uiview uikit

我有一个可重用的UITableViewCell作为我的故事板的一部分,我需要在设置文本后使用sizeToFit。为了实现这一点,我在我的单元类的layoutSubviews方法中执行sizeToFit。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您使用的是自动布局,请尝试在单元格的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];
}