UICollectionView 的使用詳解
import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>{
} @property (strong, nonatomic)UICollectionView *collectionView;
@end
ViewController.m
import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
(void)viewDidLoad { [super viewDidLoad];
//確定是水平滾動,還是垂直滾動 UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init]; [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
self.collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 64, 320, 200) collectionViewLayout:flowLayout]; self.collectionView.dataSource=self; self.collectionView.delegate=self; [self.collectionView setBackgroundColor:[UIColor clearColor]];
//注冊Cell,必須要有 [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"];
[self.view addSubview:self.collectionView]; }
pragma mark -- UICollectionViewDataSource
//定義展示的UICollectionViewCell的個數 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 10; }
//定義展示的Section的個數 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 2; }
//每個UICollectionView展示的內容 -(UICollectionViewCell )collectionView:(UICollectionView )collectionView cellForItemAtIndexPath:(NSIndexPath )indexPath { static NSString CellIdentifier = @"UICollectionViewCell"; 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]; UILabel label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; label.textColor = [UIColor redColor]; label.text = [NSString stringWithFormat:@"%d",indexPath.row];
for (id subView in cell.contentView.subviews) { [subView removeFromSuperview]; } [cell.contentView addSubview:label]; return cell; }
pragma mark --UICollectionViewDelegateFlowLayout
//定義每個Item 的大小
- (CGSize)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(60, 60); }
//定義每個UICollectionView 的 margin -(UIEdgeInsets)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(5, 5, 5, 5); }
pragma mark --UICollectionViewDelegate
//UICollectionView被選中時調用的方法 -(void)collectionView:(UICollectionView )collectionView didSelectItemAtIndexPath:(NSIndexPath )indexPath { UICollectionViewCell cell = (UICollectionViewCell )[collectionView cellForItemAtIndexPath:indexPath]; //臨時改變個顏色,看好,只是臨時改變的。如果要永久改變,可以先改數據源,然后在cellForItemAtIndexPath中控制。(和UITableView差不多吧!O(∩_∩)O~) cell.backgroundColor = [UIColor greenColor]; NSLog(@"item======%d",indexPath.item); NSLog(@"row=======%d",indexPath.row); NSLog(@"section===%d",indexPath.section); }
//返回這個UICollectionView是否可以被選擇 -(BOOL)collectionView:(UICollectionView )collectionView shouldSelectItemAtIndexPath:(NSIndexPath )indexPath { return YES; }
@end
</pre>