UICollectionView-網格視圖

1. UICollectionView佈局

   網格視圖,除了提供與UITableView一樣的功能顯示一組順序顯示的數據,還支持多列的佈局。spa

2. UICollectionView 使用代理

    > 設置Controller要遵循的協議:ci

    UICollectionViewDataSource               // 數據源協議it

    UICollectionViewDelegate                   // 數據行爲協議io

    UICollectionViewDelegateFlowLayout   // 數據流式佈局協議class

    > 建立流式佈局select

    flowLayout = [[UICollectionViewFlowLayout alloc] init]scroll

    > 設置該佈局下滑動方向方法

    flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical / Horizontal  // 默認是Vertical 在Horizontal時,元素是依次橫向擺放,Vertical時,依次豎向擺放

     > 以佈局方式和frame 初始化UICollectionView

     [[UICollectionView alloc] initWithFrame: collectionViewLayout: ]

     > 設置背景色,純代碼實現時,UICollectionView默認背景色是黑色

     .barckgroundColor

     > 設置代理

     .dataSource     // 代理 UICollectionViewDataSource

     .delegate         // 代理 UICollectionViewDelegate ,UICollectionViewDelegateFlowLayout

     > 註冊標識單元格UICollectionViewCellUICollectionView Cell只能使用定製化的,而且必須註冊。

     [collectionView registerNib: forCellWithReuseIdentifier:]

     [collectionView registerClass: forCellWithReuseIdentifier:]

     > 註冊標識分區表頭/表尾 UICollectionReusableView,建立時要手動設置其class

     [collectionView registerNib: forSupplementaryViewOfKind: withReuseIdentifier: ]

     /* forSupplementaryViewOfKind: 表示是爲表頭仍是表尾註冊,參數只有兩個可選值:UICollectionElementKindSectionHeader:表頭,UICollectionElementKindSectionFooter: 表尾  */

     > 協議方法

     - UICollectionViewDataSource

     必須實現:

// 每一個分區條數(不是行數)

  - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;

       // 數據綁定cell

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;

      其餘方法:

// 返回分區數量

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;      

  // 數據綁定表頭/表尾:必須爲其設置尺寸纔可顯示,注意查看不一樣scrollDirection下表頭的展示

      - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;

     - UICollectionViewDelegateFlowLayout

  // 返回分區表頭尺寸

  - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;

     // 返回分區表尾尺寸

- (CGSize)collectionView:(UICollectionView *)collectionView layout:

(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;

     // 返回每條的尺寸

     - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;

     // 返回每一個分區四周的外間距

     - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

    // 返回每一個分區內最小行間距

    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

    // 返回每一個分區內條目之間最小內部距離

    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section

    -UICollectionViewDelegate

   // 條被選中:注意被選中的背景色,只能自定義selectedBackgroundView,且設置後,不能設置cell的背景色,不然沒法看到點擊選中效果

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;

  // 條被反選

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath;

相關文章
相關標籤/搜索