• UICollectionLayout布局 —— UIKit之学习UICollectionView记录二《流水布局》


    重点知识

     一、 加载collectionView注意事项

      1.创建collectionView,有两种方式 :一种是xib和一种是纯代码;设置代理和数据源,注册cell,配置流水布局的属性,如上、下、左、右间距及行间距和列间距。

      2. 创建CollectionViewCell,实现collectionView代理和数据源方法。

         3. 设置每个cell的尺寸。

         4.cell出现时显示动画

    二、 流水布局思路分析

      

    三、精华代码

     1、布局一

    //1.配置collectionView
    self.automaticallyAdjustsScrollViewInsets = YES;  //默认为No,
        [self.view setBackgroundColor:[UIColor yellowColor]];
        [self.collectionView registerNib:[UINib nibWithNibName:@"STRNearPeopleCell" bundle:nil] forCellWithReuseIdentifier:nearPeopleCell];
         NSLog(@"%@",self.dataList);
        [self.collectionView reloadData];
    //2.显示动画及设置大小 和加载cell
    
    - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
        STRNearPeopleCell *hotcell  = (STRNearPeopleCell *)cell;
        [hotcell showAnamil];
        
    }
    //流水布局,系统UICollectionViewLayout.h
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
        CGFloat outInset = self.collectionView.frame.size.width - 2 * kMargin;
        NSInteger count = outInset / kItemSizeW;
        NSInteger extraTotal = (NSInteger)(outInset - kMargin * (count - 1 ));
        
        CGFloat itemWH;
        
        if (extraTotal < count * kItemSizeW) {
            
            itemWH = extraTotal / count;
        } else {
            CGFloat extraWidth = extraTotal % kItemSizeW;
            itemWH = kItemSizeW + extraWidth / count;
        }
        return CGSizeMake(itemWH, itemWH + 25);
    }
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
        return self.dataList.count;
    }
    
    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
    - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
        
        STRNearPeopleCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:nearPeopleCell forIndexPath:indexPath];
        return cell;
    }
    
    //3.设置cell
    - (void)awakeFromNib {
        [super awakeFromNib];
        // Initialization code
    }
    //此外是模拟数据,真实的话把注释取消掉,用来控制显示动画的。
    - (void)showAnamil {
        //x和y的最终值为1
    //    if (self.live.isShow) {  //当有网络模型时,可以把isShow字段加进去
    //        return;
    //    }
        self.layer.transform = CATransform3DMakeScale(0.1, 0.1, 1);
        
        [UIView animateWithDuration:1 animations:^{
            self.layer.transform = CATransform3DMakeScale(1, 1, 1);
    //        self.live.show = YES; //如果已经显示过yes
        }];
    }
    

     2、布局二

    //定义每个UICollectionView 的大小
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        return CGSizeMake(([UIScreen mainScreen].bounds.size.width-64) /3 ,([UIScreen mainScreen].bounds.size.width-64) /3);
    }
    
    //定义每个UICollectionView 的 margin
    - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {
        return UIEdgeInsetsMake(20, 8, 20, 8);
    }
    

      

    将来的自己,会感谢现在不放弃的自己!
  • 相关阅读:
    【论文阅读-Embedding】《GloVe: Global Vectors for Word Representation》
    机器学习的问题总结
    预算平滑
    ML基础番外篇-距离度量
    vim配置使用
    强化学习 Note
    强化学习(David Silver)9:探索与利用
    强化学习(David Silver)8:集成学习和计划
    强化学习(David Silver)7:策略梯度算法
    数学基础01-最优化(梯度下降法、牛顿法、拟牛顿法等)
  • 原文地址:https://www.cnblogs.com/TheYouth/p/6257429.html
Copyright © 2020-2023  润新知