Ios UITableViewCell单元重用和UILabel自动布局动态调整大小

Ios UITableViewCell单元重用和UILabel自动布局动态调整大小,ios,iphone,objective-c,uitableview,autolayout,Ios,Iphone,Objective C,Uitableview,Autolayout,我正在使用一个子类UITableViewCell,我需要在使用自动布局时将UILabel的文本对齐到左上角。我了解到sizeToFit真的不应该用于自动布局,我想避免它,并以某种方式使用约束。基本上,每次重复使用单元格时都会重置标签文本,因此重复使用时需要动态调整大小 下面是子类单元格中的惰性初始值设定项标签: - (UILabel *)commentsLabel { if (_commentsLabel == nil) { _commentsLabel = [[U

我正在使用一个子类UITableViewCell,我需要在使用自动布局时将UILabel的文本对齐到左上角。我了解到sizeToFit真的不应该用于自动布局,我想避免它,并以某种方式使用约束。基本上,每次重复使用单元格时都会重置标签文本,因此重复使用时需要动态调整大小

下面是子类单元格中的惰性初始值设定项标签:

- (UILabel *)commentsLabel {

    if (_commentsLabel == nil) {

         _commentsLabel = [[UILabel alloc] init];
         [_commentsLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
         _commentsLabel.numberOfLines = 0;
         _commentsLabel.lineBreakMode = NSLineBreakByWordWrapping;
         _commentsLabel.preferredMaxLayoutWidth = 100;
    }

    return _commentsLabel;
}
标签上设置了自动布局约束(commentsLabel是添加到单元格子类的self.customView中的子视图):

仅设置:

self.commentsLabel.preferredMaxLayoutWidth = 100;
虽然大多数答案中都提到了这一点,但它似乎不起作用

目前已经实施,但没有看到任何结果。

我又试了一个答案。

我觉得我只是缺少了一个可以添加到上述约束之外的约束,但是我尝试添加的编程约束不起作用或引发异常。我完全在代码中工作,没有XIB

ETA:尝试在现有垂直约束线内设置高度约束:

就像这里建议的那样:

在上面的垂直约束线中,使其:

-[commentsLabel(>=30@900)]-
我搞乱了高度值和优先级值,什么都没变

ETA:取得了一些进展,我认为这与标签的底部填充有关,尝试了这个方法,有些标签对齐正确,有些没有:

->=commentsToBottomPadding-

如果其他任何人使用UITableViewCell和动态更改的自定义标签遇到相同问题,解决方案:

-[commentsLabel]->=yourBottomPadding-
把它放在垂直约束中

设置文本后,在viewController中调用此选项:

[cell updateConstraints];
你看过这个帖子吗?
[cell updateConstraints];