[解决] 我的错误......细节是UILabel而不是UITextView。并且sizeToFit不会调整UILabel的大小。用UITextView替换UILabel解决了我的问题。
我有一个固定高度的自定义单元格,其中包含垂直居中的所有约束视图(称为'内容'),其中包含标题和说明。内容视图层次结构为:
当我测试'详细信息的价值时在界面构建器中,一切都在预览(xCode 6)上正常工作:细节被调整大小以包含文本和内容'是垂直居中的。
但是,当按代码设置'详细信息的内容时,并调用sizeToFit
,UITextView被正确调整大小但不更新约束。请参阅下面的cellForRowAtIndexPath
代码。我错过了什么?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// get a cell
QZSetupPartyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PackCell" forIndexPath:indexPath];
// fill the current cell with the current pack
QZPack *pack = self.party.packs[indexPath.row];
// set pack title
cell.title.text = pack.json[@"title"];
// resize textview to its content
cell.details.text = pack.json[@"desc"];
[cell.details sizeToFit];
// async load of the icon
[pack loadIconWithCompletion:^(UIImage *image) {
cell.icon.image = image;
[cell setNeedsLayout];
}];
// and recompute the cell constraints
[cell layoutIfNeeded];
[cell setNeedsDisplay];
return cell;
}