本章通過先總體介紹UICollectionView及其常用方法,再結合一個實例,了解如何使用UICollectionView。
?
UICollectionView 和 UICollectionViewController 類是iOS6 新引進的API,用于展示集合視圖,布局更加靈活,可實現多列布局,用法類似于UITableView 和 UITableViewController 類。
使用UICollectionView 必須實現UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout這三個協議。
?
下面先給出常用到的一些方法。(只給出常用的,其他的可以查看相關API)?
#pragma?mark?--?UICollectionViewDataSource??? -(NSInteger)collectionView:(UICollectionView?*)collectionView?numberOfItemsInSection:(NSInteger)section??{??????return?30;??} ?? -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView?*)collectionView??{??????return?1;??} ?? -(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??? -?(CGSize)collectionView:(UICollectionView?*)collectionView?layout:(UICollectionViewLayout*)collectionViewLayout?sizeForItemAtIndexPath:(NSIndexPath?*)indexPath??{??????return?CGSizeMake(96,?100);??} ?? -(UIEdgeInsets)collectionView:(UICollectionView?*)collectionView?layout:(UICollectionViewLayout?*)collectionViewLayout?insetForSectionAtIndex:(NSInteger)section??{??????return?UIEdgeInsetsMake(5,?5,?5,?5);??} ?? #pragma?mark?--UICollectionViewDelegate??? -(void)collectionView:(UICollectionView?*)collectionView?didSelectItemAtIndexPath:(NSIndexPath?*)indexPath??{??????UICollectionViewCell?*?cell?=?(UICollectionViewCell?*)[collectionView?cellForItemAtIndexPath:indexPath];??????cell.backgroundColor?=?[UIColor?whiteColor];??} ?? -(BOOL)collectionView:(UICollectionView?*)collectionView?shouldSelectItemAtIndexPath:(NSIndexPath?*)indexPath??{??????return?YES;??}?? ?
?
?
下面通過一個例子具體介紹下。(例子來自網絡。但是是通過第三方獲得的,無法取得鏈接。還望見諒。)
?
iOS CollectionView的出現是一大福利,再也不用用TableView來定義復雜的多欄表格了,用法與Table類似,只是Cell必須自己添加,無默認模式
由于CollectionView沒有默認的Cell布局,所以一般還是自定義方便又快捷
一、自定義Cell
1、新建類CollectionCell繼承自UICollectionViewCell
2、新建Xib,命名為CollectionCell.xib
a.選中CollectionCell.xib刪掉默認的View,從控件中拖一個Collection View Cell(圖3)到畫布中,設置大小為95*116;
?
b.選中剛剛添加的Cell,更改類名為CollectionCell,如圖4
c.在CollectionCell.xib的CollectionCell中添加一個ImageView和一個Label(圖5)
d.創建映射, 圖6,圖7
e.選中CollectionCell.m , 重寫init方法?
-?(id)initWithFrame:(CGRect)frame??{??????self?=?[super?initWithFrame:frame];??????if?(self)??????{??????????????????NSArray?*arrayOfViews?=?[[NSBundle?mainBundle]?loadNibNamed:@"CollectionCell"?owner:self?options:nil];????????????????????????????if?(arrayOfViews.count?<?1)??????????{??????????????return?nil;??????????}??????????????????if?(![[arrayOfViews?objectAtIndex:0]?isKindOfClass:[UICollectionViewCell?class]])??????????{??????????????return?nil;??????????}??????????????????self?=?[arrayOfViews?objectAtIndex:0];??????}??????return?self;??}??
f.選中CollectionCell.xib 修改其identifier為CollectionCell。
二、定義UICollectionView;
1、拖動一個Collection View到指定ViewController的View上
2、連線dataSource和delegate,并創建映射,命名為CollectionView
3、選中CollectionView的標尺,將Cell Size的Width和Height改成與自定義的Cell一樣的95*116,圖8
? ??
4、選中CollectionView的屬性,可以修改其屬性,比如是垂直滑動,還是水平滑動,選擇Vertical或Horizontal
5、選中CollectionViewCell,修改Class,繼承自CollectionCell
5、在ViewDidLoad方法中聲明Cell的類,在ViewDidLoad方法中添加,此句不聲明,將無法加載,程序崩潰
其中,CollectionCell是這個Cell的標識(之前幾步已經定義過了。 )?
[self.collectionView?registerClass:[CollectionCell?class]?forCellWithReuseIdentifier:@"CollectionCell"];??
6、在ViewController.h中聲明代理?
@interface?ViewController?:?UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>??
?
7、在.m文件中實現代理方法?
-(NSInteger)collectionView:(UICollectionView?*)collectionView?numberOfItemsInSection:(NSInteger)section??{??????return?12;??}????-(UICollectionViewCell?*)collectionView:(UICollectionView?*)collectionView?cellForItemAtIndexPath:(NSIndexPath?*)indexPath??{????????????CollectionCell?*cell?=?(CollectionCell?*)[collectionView?dequeueReusableCellWithReuseIdentifier:@"CollectionCell"?forIndexPath:indexPath];????????????????NSString?*imageToLoad?=?[NSString?stringWithFormat:@"%d.png",?indexPath.row];??????????cell.imageView.image?=?[UIImage?imageNamed:imageToLoad];??????????cell.label.text?=?[NSString?stringWithFormat:@"{%ld,%ld}",(long)indexPath.row,(long)indexPath.section];????????????return?cell;??}??
?
8 。效果如圖10
點擊某項后跳轉事件與UITableView類似,實現代理方法?
-(void)collectionView:(UICollectionView?*)collectionView?didSelectItemAtIndexPath:(NSIndexPath?*)indexPath ?
總結
以上是生活随笔為你收集整理的iOS开发- UICollectionView详解+实例的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。