iOS之UIStackView(xib升级版)

2016-09-02  本文已影响114人  思念那年慕云
第一步
第二步
#(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

}
上一篇下一篇

猜你喜欢

热点阅读