iOS之UIStackView(xib升级版)

第一步

第二步

#(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

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容