UICollectionView(Basics)
From iOS6, UICollectionView was coming. It realizes tile like layout.
The style of programming is similar to UITableView.
Let’s make a sample!
Sample
This sample is only codes!(no use storyboard, and xib)
It prepares class which has UICollectionView, and implements 2 protocols.
- UICollectionViewDelegate
- UICollectionViewDataSource
It’s just like UITableView isn’t it?
Also, need to prepare cell which has extends UICollectionViewCell
It is cell sample, draws rect and circle for example.
Cell.h
@interface Cell : UICollectionViewCell @end
Cell.m
#import "Cell.h" @implementation Cell - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(context, 1.0, 0.5, 0.0, 1.0); CGRect r1 = CGRectMake(0 , 0, 25, 25); // Size CGContextAddRect(context,r1); CGContextFillPath(context); CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.5, 1.0); CGContextAddEllipseInRect(context, CGRectMake(0 , 0, 25, 25)); CGContextStrokePath(context); } @end
Next is main codes. It is ViewController
CollectionViewSample.h
@interface CollectionViewSample : UIViewController<UICollectionViewDelegate, UICollectionViewDataSource> @end
CollectionViewSample.m
#import "CollectionViewSample.h" #import "Cell.h" @interface CollectionViewSample () @property (nonatomic) IBOutlet UICollectionView *collectionView; @end @implementation CollectionViewSample -(void)viewDidLoad { [super viewDidLoad]; UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.itemSize = CGSizeMake(25, 25); layout.minimumLineSpacing = 10.0f; layout.minimumInteritemSpacing = 12.0f; self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height-20) collectionViewLayout:layout]; self.collectionView.delegate = self; self.collectionView.dataSource = self; [self.collectionView registerClass:[Cell class] forCellWithReuseIdentifier:@"CellA"]; [self.view addSubview:self.collectionView]; } #pragma mark - #pragma mark - UICollectionViewDataSource -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CellA" forIndexPath:indexPath]; return cell; // Cell } - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; // number of section } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 120; // number of item } @end