UICollectionView的基礎應用

@interface ViewController ()
設置遵從的代理
<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>

@property (nonatomic,strong)UICollectionViewFlowLayout *flowLayout;
@property (nonatomic,strong)UICollectionView *collectionView;
@end

1.UICollectionViewDelegateFlowLayout 代理方法

設置item大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section==0) {
        return CGSizeMake(100, 100);
    }
    return CGSizeMake(90, 90);
}
設置邊緣約束---上、下、左精肃、右
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    if (section==0) {
        return UIEdgeInsetsMake(10, 75/4, 10, 75/4);
    }
    return UIEdgeInsetsMake(10, 105/4, 10, 105/4);
}
增廣頭視圖大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
    return CGSizeMake(0, 50);
}
增廣尾視圖大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
{
    return CGSizeMake(0, 30);
}

2.集合視圖布局

 ①布局必須借助UICollectionViewFlowLayout布局類完成, UICollectionViewFlowLayout為公共類, 一般采用其子類UICollectionViewFlowLayout完成布局任務
 ②集合視圖默認背景顏色為穿透色(黑色), 必須手動設置其背景顏色
 ③每行item的個數多少由多因素影響, 不能人為規(guī)定(sectionInset、itemSize姚建、minimumLineSpacing)
 ④增廣視圖也具有代理方法, 必須存在重用機制(需注冊, 可重用, 可自定義)
 ⑤集合視圖的Cell吝沫、item子控件只有一層view,實現多功能布局必須自定義
- (void)layoutCollectionView
{
    self.flowLayout = [[UICollectionViewFlowLayout alloc]init];
    // 屬性
    //item大小
    _flowLayout.itemSize = CGSizeMake(100, 100);
    // 最小列間距
    _flowLayout.minimumInteritemSpacing = 75/4.f;
    // 最小行間距
    _flowLayout.minimumLineSpacing = 10.f;
    // 分區(qū)內容邊間距
    _flowLayout.sectionInset = UIEdgeInsetsMake(10, 75/4, 10, 75/4);
    // 增廣頭視圖尺寸
    _flowLayout.headerReferenceSize = CGSizeMake(30, 30);
    // 增廣尾視圖尺寸
    _flowLayout.footerReferenceSize = CGSizeMake(50, 50);
    // 滑動方向
    _flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
}

// 創(chuàng)建集合視圖CollectionView
- (void)creatCollectionView
{
    self.collectionView = [[UICollectionView alloc]initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:_flowLayout];
    _collectionView.delegate = self;
    _collectionView.dataSource = self;
    // 設置背景顏色
    _collectionView.backgroundColor = [UIColor cyanColor];
    // 注冊Cell/item
//    [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CollectionCell"];
    [_collectionView registerNib:[UINib nibWithNibName:@"ApCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ApCollectionViewCell"];
    
    
    // 注冊增廣頭視圖
//    [_collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
    [_collectionView registerNib:[UINib nibWithNibName:@"ApReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"ApReusableView"];
    
    // 注冊增廣尾視圖
    [_collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView"];
     self.view = _collectionView;
}

3.collectionView相關代理

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    if (section==0) {
        return 9;
    }else{
        return 21;
    }
    
//    return 100;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionCell" forIndexPath:indexPath];
     ApCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ApCollectionViewCell" forIndexPath:indexPath];
    cell.backgroundColor =[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0  blue:arc4random()%256/255.0  alpha:1.f];
    return cell;
}

// 增廣視圖代理方法
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
//        UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
        
        ApReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"ApReusableView" forIndexPath:indexPath];
        headerView.backgroundColor = [UIColor redColor];
        return headerView;
    }else{
        UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
        footerView.backgroundColor = [UIColor greenColor];
        return footerView;
    }
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 2;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"第%ld分區(qū)掷匠,第%ld個Item",indexPath.section+1,indexPath.row+1);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末僵刮,一起剝皮案震驚了整個濱河市据忘,隨后出現的幾起案子,更是在濱河造成了極大的恐慌妓笙,老刑警劉巖若河,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能岩,死亡現場離奇詭異寞宫,居然都是意外死亡,警方通過查閱死者的電腦和手機拉鹃,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門辈赋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膏燕,你說我怎么就攤上這事钥屈。” “怎么了坝辫?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵篷就,是天一觀的道長。 經常有香客問我近忙,道長竭业,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任及舍,我火速辦了婚禮未辆,結果婚禮上,老公的妹妹穿的比我還像新娘锯玛。我一直安慰自己咐柜,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布攘残。 她就那樣靜靜地躺著拙友,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歼郭。 梳的紋絲不亂的頭發(fā)上献宫,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音实撒,去河邊找鬼姊途。 笑死涉瘾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的捷兰。 我是一名探鬼主播立叛,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贡茅!你這毒婦竟也來了秘蛇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤顶考,失蹤者是張志新(化名)和其女友劉穎赁还,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體驹沿,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡艘策,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了渊季。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朋蔫。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖却汉,靈堂內的尸體忽然破棺而出驯妄,到底是詐尸還是另有隱情,我是刑警寧澤合砂,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布青扔,位于F島的核電站,受9級特大地震影響翩伪,放射性物質發(fā)生泄漏微猖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一幻工、第九天 我趴在偏房一處隱蔽的房頂上張望励两。 院中可真熱鬧,春花似錦囊颅、人聲如沸当悔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盲憎。三九已至,卻和暖如春胳挎,著一層夾襖步出監(jiān)牢的瞬間饼疙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工慕爬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窑眯,地道東北人屏积。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像磅甩,于是被迫代替她去往敵國和親炊林。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容