我有一个动态自定义UITableViewCell
,它利用了自动布局。
我根据单元格的宽度改变标签的文本内容。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
cell.someLabel.text = CGRectGetWidth(cell.bounds) < 321 ? @"Concise" : @"Much longer blurb";
return cell;
}
在方向转换期间调用 reloadData
来更新标签。
虽然这恰好有用,但我想有一种更好的方法来处理这个问题,而不涉及重新加载tableView的开销。
(没有任何约束需要更改。标签位于同一个地方,但只要有更多空间,就会显示不同的内容。)
我应该继承UILabel
并更改-didMoveToSuperview
中的文字吗?
是否可以更改-layoutSubViews
中的文字? (这不会导致另一个布局通过,因为文本被更改了吗?)
感谢您的回答!
答案 0 :(得分:4)
只需将此逻辑添加到layoutSubviews
即可。每次自动布局引擎都会调用它时调用它。
-(void)layoutSubviews {
self.someLabel.text = CGRectGetWidth(self.bounds) < 321 ? @"Concise" : @"Much longer blurb";
[super layoutSubviews];
}