ios uicollectionview
2015-12-27 17:23
351 查看
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类。
使用UICollectionView 必须实现UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout这三个协议。
#pragma mark -- UICollectionViewDataSource //定义展示的UICollectionViewCell的个数 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 30; } //定义展示的Section的个数 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } //每个UICollectionView展示的内容 -(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 //定义每个UICollectionView 的大小 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(96, 100); } //定义每个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]; cell.backgroundColor = [UIColor whiteColor]; } //返回这个UICollectionView是否可以被选择 -(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { return YES; }
以上是一些常用的代理和方法。
在ViewDidLoad中要注册CollectionCell
[self.collectionView registerClass:[CollectionCell class] forCellWithReuseIdentifier:@"CollectionCell"];
也可以先布局再创建UICollectionView
// 1.创建流水布局 02. 03. UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 04. 05. // 2.设置每个格子的尺寸 06. layout.itemSize = CGSizeMake(250, 250); 07. 08. // 3.设置整个collectionView的内边距 09. CGFloat paddingY = 20; 10. CGFloat paddingX = 40; 11. layout.sectionInset = UIEdgeInsetsMake(paddingY, paddingX, paddingY, paddingX); 12. 13. // 4.设置每一行之间的间距 14. layout.minimumLineSpacing = paddingY;
//初始化 UICollectionViewController 2. UICollectionViewController *controller = [[UICollectionViewController alloc] initWithCollectionViewLayout:layout]
相关文章推荐
- iOS开发——高级篇——流水布局UICollectionViewFlowLayout的基本使用
- IOS项目之UICollectionView中Item布局偏移问题
- IOS 瀑布流UICollectionView实现
- iOS UICollectionView的详细介绍
- iOS UICollectionView学习之一,UICollectionView + storyboard 简单应用
- iOS 手写代码UICollectionView
- iOS:UICollectionView纯自定义的布局:瀑布流布局
- IOS瀑布流通过UICollectionView控件实现
- iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流
- iOS开发之窥探UICollectionViewController(五) --一款炫酷的图片浏览组件
- iOS UICollectionView那些我”错过”的API
- iOS UICollectionView简单使用
- iOS开发之高级视图—— UICollectionViewController
- IOS UICollectionView didselect促发不到
- iOS 浅谈UICollectionView的优化
- 【WWDC2016 Session笔记】 iOS 10 UICollectionView新特性
- iOS 如何解决'could not dequeue a view of kind: UICollectionElementKindCell with identifier cell
- iOS 10 UICollectionView 性能优化
- IOS UI学习 UICollectionView
- ios基于UICollectionView实现横向瀑布流