美文网首页
关于TableView和CollectionView 使用Mas

关于TableView和CollectionView 使用Mas

作者: AnnieAri | 来源:发表于2017-03-04 10:57 被阅读0次

    在使用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);
    }
    

    相关文章

      网友评论

          本文标题:关于TableView和CollectionView 使用Mas

          本文链接:https://www.haomeiwen.com/subject/zgmdgttx.html