iOS中使用UICollectionView
ViewController.m中:
#import "ViewController.h"
//匯入我們自定義的Cell
#import "myCollectionViewCell.h"
#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@end
@implementation ViewController
//將重用識別符號定義成一個全域性變數
static NSString *cell_identy = @"cell";
- (void)viewDidLoad {
[super viewDidLoad];
//建立佈局物件
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
//設定佈局屬性
//1.單元格大小 --> 決定 行/列 的單元格的個數
layout.itemSize = CGSizeMake((kScreenW-40)/3.0, 136);
//layout.itemSize = CGSizeMake(145, 150);
//2.設定最小間隙
/**
* 滑動方向垂直:水平間隙由單元格寬度和集合檢視寬度決定 最小不能低於最小間隙
垂直間隙就是最小垂直間隙
水平方向滑動:垂直間隙由單元格高度和集合檢視高度決定 最小不能低於最小間隙
水平間隙就是最小水平間隙
*/
//垂直方向間隙 (間隙本身是水平的)
layout.minimumLineSpacing = 5;
//水平方向間隙 (間隙本身是垂直的)
layout.minimumInteritemSpacing = 1;
//3.設定滾動方向(向哪滑動)
/**
* UICollectionViewScrollDirectionVertical,垂直
UICollectionViewScrollDirectionHorizontal 水平
*/
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
//4.頭/尾檢視尺寸
// layout.headerReferenceSize = CGSizeMake(0, 0);
// layout.footerReferenceSize = CGSizeMake(0, 0);
//集合檢視
//I.同步佈局類物件建立
UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 64, kScreenW, kScreenH-64) collectionViewLayout:layout];
//II.屬性
collectionView.delegate = self;
collectionView.dataSource = self;
[self.view addSubview:collectionView];
collectionView.backgroundColor = [UIColor whiteColor];
// 這句話的意思是為了 不管集合檢視裡面的值 多不多 都可以滾動 解決了值少了 集合檢視不能滾動的問題
collectionView.alwaysBounceVertical = YES;
//註冊單元格
/**
* 將UICollectionViewCell類的單元格 加上 cell_identy複用標記
*/
[collectionView registerClass:[myCollectionViewCell class] forCellWithReuseIdentifier:cell_identy];
//這步很重要 不然沒法載入出你自定義的cell 類比UITableView中自定義cell 也需要這樣註冊
UINib *nib = [UINib nibWithNibName:@"myCollectionViewCell"
bundle: [NSBundle mainBundle]];
//collectionView宣告時 也需要在這裡這樣註冊
[collectionView registerNib:nib forCellWithReuseIdentifier:cell_identy];
}
#pragma mark --UICollectionViewDataSource
//返回item個數
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return 6;
}
//返回單元格 複用
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
//使用註冊單元格
myCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cell_identy forIndexPath:indexPath];
cell.backgroundColor = [UIColor clearColor];
//載入圖片
cell.imageView.image = [UIImage imageNamed:@"fe8c42e67680bbb387e7f68b90c641bd.jpg"];
cell.imageView.layer.cornerRadius = 50;
cell.imageView.clipsToBounds = YES;
//設定label文字
cell.label.text = [NSString stringWithFormat:@"我是第%ld個cell",indexPath.row+1];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"%ld",indexPath.row);
}
#pragma mark --UICollectionViewDelegateFlowLayout
//邊緣大小
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
return UIEdgeInsetsMake(5, 5, 5, 5);
}
//定義每個UICollectionView 的大小
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
複製程式碼
最後效果: