UITableView
UICollectionView
?//UICollectionViewLayout
? ? //UICollectionViewLayout決定了UICollectionView如何顯示在界面上,Apple提供了一個最簡單的默認layout對象:UICollectionViewFlowLayout。
? ? //Flow Layout是一個Cells的線性布局方案,并具有頁面和頁腳。其可定制的內容如下:
? ? //itemSize屬性
? ? //設定全局的Cell尺寸,如果想要單獨定義某個Cell的尺寸,可以使用下面方法:
? ? - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
?? ?
? ? //minimumLineSpacing屬性
? ? //設定全局的行間距,如果想要設定指定區內Cell的最小行距,可以使用下面方法:
?? ?
? ? - (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
?