about UICollectionView實例[Basic]

本文是通過一個實例來了解如何使用UICollectionView滋觉,并在文章的最后加上了常用的方法

UICollectionView 和 UICollectionViewController 用于展示集合視圖,布局更加靈活勋陪,可實現(xiàn)多列布局,用法類似于UITableView 和 UITableViewController 類。
使用UICollectionView 必須實現(xiàn)UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout這三個協(xié)議。


下面將通過一個例子逝嚎,來具體介紹

  • 自定義Cell

    1. 新建類CollectionViewCell繼承自UICollectionViewCell 并勾上Also create XIB file
      image

      新建后出現(xiàn)三個文件CollectionViewCell.h、CollectionViewCell.m详恼、CollectionViewCell.xib
    2. 點(diǎn)擊CollectionViewCell.xib补君,改變cell大小為200*60
      image
    3. 在CollectionViewCell.xib的CollectionCell中添加一個ImageView和一個Label
      image
    4. 創(chuàng)建imageView與Label的映射


      image

      image
    5. 選中CollectionViewCell.m , 重寫init方法
    self = [super initWithFrame:frame];
    if (self) {
        // 初始化時加載collectionCell.xib文件
        NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"CollectionViewCell" owner:self options:nil];
        // 如果路徑不存在,return nil
        if (arrayOfViews.count < 1){
            return nil;
        }
        // 如果xib中view不屬于UICollectionViewCell類昧互,return nil
        if (![[arrayOfViews objectAtIndex:0] isKindOfClass:[UICollectionViewCell class]]){
            return nil;
        }
        // 加載nib
        self = [arrayOfViews objectAtIndex:0];
    }
    return self;
    } ```
    6. 選中CollectionViewCell.xib 修改其identifier為CollectionCell
    
    
  • 定義UICollectionView

    1. 拖動一個Collection View到指定ViewController的View上
    2. 連線dataSource和delegate挽铁,并創(chuàng)建映射,命名為CollectionView
      連線dataSource和delegate:選擇collectionView按住CTRL鍵硅堆,拉至ViewController處
    3. 選中Collection View Cell 拉動大小至 200*60
    4. 選中CollectionViewCell屿储,修改Class,繼承自CollectionCell
    5. 在ViewDidLoad方法中聲明Cell的類渐逃,在ViewDidLoad方法中添加够掠,此句不聲明,將無法加載茄菊,程序崩潰
      其中CollectionCell為cell的Identifier

[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"CollectionCell"];6. 選擇十張照片拉入Assets.xcassets 這里我拉入的格式為.jpg 名稱1~10 7. 在xxxViewController.h中聲明代理
@interface ViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>```
8. 在.m文件中實現(xiàn)代理方法

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  //返回每個section中item的個數(shù)
  return 10;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  CollectionViewCell *cell = (CollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionCell" forIndexPath:indexPath]; 
  //圖片名稱
  NSString *imageToLoad = [NSString stringWithFormat:@"%d.jpg", indexPath.row];
  //加載圖片
  cell.imageView.image = [UIImage imageNamed:imageToLoad];
  //設(shè)置label文字
  cell.label.text = [NSString stringWithFormat:@"{%ld,%ld}",(long)indexPath.row,(long)indexPath.section];
  
  return cell;
}
  • 效果圖如下

    image
  • 代碼示例我已放在我的github上疯潭,歡迎下載

  • 一些常見代碼

pragma mark -- UICollectionViewDataSource

//定義展示的UICollectionViewCell的個數(shù)
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 30;
}
//定義展示的Section的個數(shù)
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
//每個UICollectionView展示的內(nèi)容
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"GradientCell";
UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

cell.backgroundColor = [UIColor colorWithRed:((10 * indexPath.row) / 255.0) green:((20 * indexPath.row)/255.0) blue:((30 * indexPath.row)/255.0) alpha:1.0f];  
return cell;  

}```

#pragma mark --UICollectionViewDelegateFlowLayout   
//定義每個UICollectionView 的大小  
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath  
{  
    return CGSizeMake(96, 100);  
}   
//定義每個UICollectionView 的 margin  
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section  
{  
    return UIEdgeInsetsMake(5, 5, 5, 5);  
}
#pragma mark --UICollectionViewDelegate   
//UICollectionView被選中時調(diào)用的方法  
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath  
{  
    UICollectionViewCell * cell = (UICollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];  
    cell.backgroundColor = [UIColor whiteColor];  
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市面殖,隨后出現(xiàn)的幾起案子竖哩,更是在濱河造成了極大的恐慌,老刑警劉巖脊僚,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件相叁,死亡現(xiàn)場離奇詭異,居然都是意外死亡辽幌,警方通過查閱死者的電腦和手機(jī)增淹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乌企,“玉大人虑润,你說我怎么就攤上這事〖咏停” “怎么了拳喻?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長猪腕。 經(jīng)常有香客問我冗澈,道長,這世上最難降的妖魔是什么码撰? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任渗柿,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朵栖。我一直安慰自己颊亮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布陨溅。 她就那樣靜靜地躺著终惑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪门扇。 梳的紋絲不亂的頭發(fā)上雹有,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音臼寄,去河邊找鬼霸奕。 笑死,一個胖子當(dāng)著我的面吹牛吉拳,可吹牛的內(nèi)容都是我干的质帅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼留攒,長吁一口氣:“原來是場噩夢啊……” “哼煤惩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炼邀,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤魄揉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拭宁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洛退,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年杰标,在試婚紗的時候發(fā)現(xiàn)自己被綠了不狮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡在旱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出推掸,到底是詐尸還是另有隱情桶蝎,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布谅畅,位于F島的核電站登渣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毡泻。R本人自食惡果不足惜胜茧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呻顽,春花似錦雹顺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喉前,卻和暖如春没酣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卵迂。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工裕便, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人见咒。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓偿衰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親论颅。 傳聞我的和親對象是個殘疾皇子哎垦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容