第二步
#(1)内部控件也可以选中,然后再包裹一个UIStackView进行布局。
#(2)个人感觉,简单的布局,比较有规律的选UIStackView,反之,还是自己设置布局简单点。
接下来当然是自适应高度了
这里使用ios6之后出的systemLayoutSizeFittingSize,
只需要在原来正常使用tableView的基础上,加上下面的内容就OK了。
//在cell的.m文件中设置要自适应的label的宽度
- (void)awakeFromNib {
[super awakeFromNib];
//注意:这里一定要写上需要自适应高度的label的最大宽。
//注意:这里的右侧要写屏幕的宽度,不要写当前cell的宽度,因为它默认是根据xib中cell拖的大小来算的。
self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width;
self.timeLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
ThirdTableViewCell *cell = (ThirdTableViewCell *)[self tableView:self.tableView cellForRowAtIndexPath:indexPath];
/**
*下面三种方法获取cell来计算高度是不准确的,以后采取上面的方式来获取cell
//1
ThirdTableViewCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"ThirdTableViewCell" owner:self options:nil] lastObject];
//2
ThirdTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//3
ThirdTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ThirdTableViewCellID];
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"ThirdTableViewCell" owner:self options:nil] lastObject];
}
*/
//立即更新约束,暂时没有发现作用
// [cell setNeedsUpdateConstraints];
// [cell updateConstraintsIfNeeded];
CGSize cellSize = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
NSLog(@"cellSizeH----%f",cellSize.height);
return cellSize.height+1; //计算的高度误差为1
}
网友评论