UICollectionView 的使用詳解

jopen 9年前發布 | 1K 次閱讀 Objective-C IOS

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>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!