你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS:UICollectionView的構建及使用

iOS:UICollectionView的構建及使用

編輯:IOS開發綜合

第一部分,三個協議方法,先介紹兩個

 

前兩個的用法和tableView的很像,第三個是頭視圖尾視圖的協議。 (頭視圖尾視圖,一樣要寫代理,寫注冊,缺少了就不行。) 注冊以後,就不需要再去管理復用的問題了。這點就很簡單。這個如果用好的話,會非常的簡單。很多事情迎刃而解,否則使用tableView的話,需要三個tableView一起滑動,彼此之間需要觀察,一旦變化隨之變化,用scroller 的ContentOffset 來控制滑動,非常不科學,用這個的話三個就一起滑動了。

第二部分,構建

先得創建一個layout,UICollectionViewFlowLayout 這個類型的
//創建布局對象
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
//設置單元格的尺寸
flowLayout.itemSize = CGSizeMake(80, 80);
//設置頭視圖高度
flowLayout.headerReferenceSize = CGSizeMake(0, 30);
//flowlaout的屬性,橫向滑動
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
//接下來就在創建collectionView的時候初始化,就很方便了(能直接帶上layout)
_myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 200, 320, 280) collectionViewLayout:flowLayout];
_myCollectionView.tag = 200;
_myCollectionView.backgroundColor = [UIColor greenColor]; _myCollectionView.delegate = self;
_myCollectionView.dataSource = self;
//添加到主頁面上去 
[self.view addSubview:_myCollectionView];
//collectionCell的注冊
[_myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"myheheIdentifier"];
//collection頭視圖的注冊   奇葩的地方來了,頭視圖也得注冊
[_myCollectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"Identifierhead”];

#pragma mark -UICollectionViewDataSource
//指定組的個數 ,一個大組!!不是一排,是N多排組成的一個大組(與下面區分)
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 2;
}

//指定單元格的個數 ,這個是一個組裡面有多少單元格,e.g : 一個單元格就是一張圖片
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 10;
}

//構建單元格
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if (collectionView.tag == 200) {
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myheheIdentifier" forIndexPath:indexPath];
        cell.backgroundColor = [UIColor purpleColor];
        return cell;
    }
}

//組的頭視圖創建
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    UICollectionReusableView *headView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"Identifierhead" forIndexPath:indexPath];
    headView.backgroundColor = [UIColor blueColor];
    return headView;
}

//通過協議方法設置單元格尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat rd = arc4random()%90;
    return CGSizeMake(90, rd);
}


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved