关于TableView和CollectionView 使用Mas
2017-03-04 本文已影响0人
AnnieAri
在使用masory对以上两个控件进行布局的时候有可能会报以下警告:
Paste_Image.png一般如果是在cell里面的布局只要设置正确,是不会有警告的,这个警告原因是因为使用了这种方式创建tableView
UITableView *taskListTableView = [[UITableView alloc] initWithFrame:(CGRectZero) style:(UITableViewStyleGrouped)]; //宽设置为了0
[self.view addSubview:taskListTableView];
//然后直接设置了tableViewHeader
//头部视图
CGFloat height = [ARMyTaskHeaderView getMaxY]; //这句用于计算 因为里面width已经给定 所以这句里面并没有报警告
ARMyTaskHeaderView *headerView = [[ARMyTaskHeaderView alloc] initWithFrame:(CGRectMake(0, 0, ScreenWidth, height))];//关键在于这一句
///在给tableView的header赋值时,创建的view x,y,width 全都无效 只有height是有效的
//所以这时候 headerView的width其实是0 ;
self.headerView = headerView;
taskListTableView.tableHeaderView = headerView;
//布局
[taskListTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.offset(0);
}];
所以有了关键的一句:
"<NSLayoutConstraint:0x600000482620 ARMyTaskHeaderView:0x7fe8e2622c80.width == 0>"
虽然最终没有影响 但是报警告还是很烦的 所以有header的时候创建tableView还是给1个宽吧;
然后说一下collectionView的 flowLayout的事,
如果使用masory 给collectionView设布局图省事 给frame赋值zero
UICollectionView * colletionView= [[UICollectionView alloc] initWithFrame:(CGRectZero) collectionViewLayout:layout];
你将会在控制台看见 大概就是collectionView的size 比 itemSize还要小的那个警告 ,具体不贴代码了
可以在一下代理重新设置layout
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat width = (ScreenWidth - 4 * margin) / 3;
CGFloat height = width *Ari_CellRatio;
return CGSizeMake(width, height);
}