当我更改行数时,具有 rowHeight 的 UITableView UITableViewAutomaticDImension 不会更新

W.K*_*K.S 1 uitableview ios ios-autolayout uitableviewautomaticdimension

我有一个UITableViewCell固定在底部的描述标签,如下所示: 在此输入图像描述

点击描述标签可在和numberOfLines之间切换:30

- (void)awakeFromNib {
    [super awakeFromNib];
    [self setupView];
}

-(void) setupView
{

    UITapGestureRecognizer * gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNumberOfLines)];
    self.jobDescriptionLabel.userInteractionEnabled = YES;
    [self.jobDescriptionLabel addGestureRecognizer:gestureRecognizer];
}

- (void) toggleNumberOfLines {
    if(self.jobDescriptionLabel.numberOfLines != 0){
        self.jobDescriptionLabel.numberOfLines = 0;
    }else{
        self.jobDescriptionLabel.numberOfLines = kNumberOfLines;
    }
    [self.jobDescriptionLabel sizeToFit];
    [self layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)

当我点击标签时,行数确实发生了变化,但单元格不会扩展以容纳新的行数。我该如何解决?

折叠(默认):

在此输入图像描述

扩展:

在此输入图像描述

Don*_*Mag 5

如果您正确设置了约束,则不需要重新加载数据——不需要重新加载整个表,甚至不需要重新加载受影响的行。

最好的方法是将委托函数添加回您的表视图控制器,然后连续调用这些行:

tableView.beginUpdates()
tablebleView.endUpdates()
Run Code Online (Sandbox Code Playgroud)

这将告诉自动布局重新计算行高。

编辑:检查我的答案 - 其中包括演示项目的链接 - 此处:使用“更多”按钮(如 Instagram)扩展 UITableView 内的 UILabel