Masonry的学习

Masonry是一个轻量级的布局框架  采用更优雅的链式语法封装自动布局简洁明了.

用masonry已经有一段时间,也就是停留在官方demo的事例基础上,今天有空就刚好研究一下zorro写的一个demo

子视图始终是父视图的一半改怎么写:

UIView*subView = [UIViewnew];

subView.backgroundColor= [UIColorredColor];

[_containerViewaddSubview:subView];

[subViewmas_makeConstraints:^(MASConstraintMaker*make) {

//上下左贴边

make.left.equalTo(_containerView.mas_left);

make.top.equalTo(_containerView.mas_top);

make.bottom.equalTo(_containerView.mas_bottom);

//宽度为父view的宽度的一半

make.width.equalTo(_containerView.mas_width).multipliedBy(0.5);

}];


tableviewcell高度根据内容自适应:

这里分为2种情况,ios8之后tableview有个新的特性可以计算cell内容返回高度:

// iOS 8的Self-sizing特性

if([UIDevice currentDevice].systemVersion.integerValue >7) {

_tableView.rowHeight = UITableViewAutomaticDimension;

}

或者用masonry计算cell高度

- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {

#ifdef IOS_8_NEW_FEATURE_SELF_SIZING

// iOS 8的Self-sizing特性

return UITableViewAutomaticDimension;

#else

staticCase4Cell*templateCell;

staticdispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

templateCell = [tableViewdequeueReusableCellWithIdentifier:NSStringFromClass([Case4Cellclass])];

});

//获取对应的数据

Case4DataEntity*dataEntity =_data[(NSUInteger) indexPath.row];

//判断高度是否已经计算过

if(dataEntity.cellHeight<=0) {

//填充数据

[templateCellsetupData:dataEntity];

//根据当前数据,计算Cell的高度,注意+1

dataEntity.cellHeight= [templateCell.contentViewsystemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height+0.5f;

NSLog(@"Calculate height: %ld", (long) indexPath.row);

}else{

NSLog(@"Get cache %ld", (long) indexPath.row);

}

returndataEntity.cellHeight;

#endif

}

你可能感兴趣的:(Masonry的学习)