UITableViewide
UICollectionView佈局
//UICollectionViewLayoutspa
//UICollectionViewLayout決定了UICollectionView如何顯示在界面上,Apple提供了一個最簡單的默認layout對象:UICollectionViewFlowLayout。對象
//Flow Layout是一個Cells的線性佈局方案,並具備頁面和頁腳。其可定製的內容以下:blog
//itemSize屬性事件
//設定全局的Cell尺寸,若是想要單獨定義某個Cell的尺寸,能夠使用下面方法:ci
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;element
//minimumLineSpacing屬性it
//設定全局的行間距,若是想要設定指定區內Cell的最小行距,能夠使用下面方法:io
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
//minimumInteritemSpacing屬性
//設定全局的Cell間距,若是想要設定指定區內Cell的最小間距,能夠使用下面方法:
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
//scrollDirection屬性
//設定滾動方向,有UICollectionViewScrollDirectionVertical和UICollectionViewScrollDirectionHorizontal兩個值。
//headerReferenceSize屬性與footerReferenceSize屬性
//設定頁眉和頁腳的全局尺寸,須要注意的是,根據滾動方向不一樣,header和footer的width和height中只有一個會起做用。若是要單獨設置指定區內的頁面和頁腳尺寸,能夠使用下面方法:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
//sectionInset屬性
//設定全局的區內邊距,若是想要設定指定區的內邊距,能夠使用下面方法:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//UICollectionViewDataSource
//返回collection view裏區(section)的個數,若是沒有實現該方法,將默認返回1:
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
//返回指定區(section)包含的數據源條目數(number of items),該方法必須實現:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
//返回某個indexPath對應的cell,該方法必須實現:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
if(indexPath.section==0)
{
cell.backgroundColor = [UIColor redColor];
}
else if(indexPath.section==1)
{
cell.backgroundColor = [UIColor greenColor];
}
return cell;
}
//UICollectionViewCell結構上相對比較簡單,由下至上:
//
//首先是cell自己做爲容器view
//而後是一個大小自動適應整個cell的backgroundView,用做cell平時的背景
//再其次是selectedBackgroundView,是cell被選中時的背景
//最後是一個contentView,自定義內容應被加在這個view上
//爲collection view添加一個補充視圖(頁眉或頁腳)
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
//設定頁眉的尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
//設定頁腳的尺寸
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
//添加頁眉和頁腳之前須要註冊類和標識:
- (void)registerClass:(Class)viewClass forSupplementaryViewOfKind:(NSString *)elementKind withReuseIdentifier:(NSString *)identifier
//設定指定區內Cell的最小行距,也能夠直接設置UICollectionViewFlowLayout的minimumLineSpacing屬性
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
//設定指定區內Cell的最小間距,也能夠直接設置UICollectionViewFlowLayout的minimumInteritemSpacing屬性
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
//UICollectionViewDelegate
//當指定indexPath處的item被選擇時觸發
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
//P.s. 當你刪除或添加元素時,必定要更新numberOfItemsInSection的返回狀況。
//當指定indexPath處的item被取消選擇時觸發,僅在容許多選時被調用
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
//下面是三個和高亮有關的方法:
//事件的處理順序以下:
//
//手指按下
//shouldHighlightItemAtIndexPath (若是返回YES則向下執行,不然執行到這裏爲止)
//didHighlightItemAtIndexPath (高亮)
//手指鬆開
//didUnhighlightItemAtIndexPath (取消高亮)
//shouldSelectItemAtIndexPath (若是返回YES則向下執行,不然執行到這裏爲止)
//didSelectItemAtIndexPath (執行選擇事件)
//若是隻是簡單實現點擊後cell改變顯示狀態,只須要在cellForItemAtIndexPath方法裏返回cell時,指定cell的selectedBackgroundView
- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
- (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath