UICollectionView的使用有两种方法,一种是继承UICollectionViewController,这个Controller会自带一个UICollectionView;另外一种是作为一个视图放在普通的UIViewController里面。
个人更喜欢第二种。下面采用第二种方式简单介绍一下UICollectionView的使用。
1.UIViewController实现委托,代码如下
@interface YourViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>
2.声明UICollectionView,代码如下
@property(nonatomic,retain)UICollectionView*myCollectionView;
3.初始化UICollectionView,代码如下
- (void)viewDidLoad
{
[super viewDidLoad];
[self initConllectionView];
}
-(void)initConllectionView{
CircleLayout*layout=[[CircleLayout alloc] init];
myCollectionView=[[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout];
[myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
myCollectionView.backgroundColor=[UIColor whiteColor];
myCollectionView.delegate=self;
myCollectionView.dataSource=self;
[self.view addSubview:myCollectionView];
[layout release];
}
这里面的CircleLayout继承自UICollectionViewLayout,主要用来表现UICollectionView的布局以及一些属性。
4.实现- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
UICollectionViewCell*cell=[collectionView dequeueReusableCellWithReuseIdentifier:CELL_STR forIndexPath:indexPath];
for (UIView*view in cell.contentView.subviews) {
if (view) {
[view removeFromSuperview];
}
}
UIImageView*imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, ITEM_WIDTH, ITEM_WIDTH)];
if (indexPath.row>4) {
imgView.image=[UIImage imageNamed:@"apple.png"];
}else{
imgView.image=[UIImage imageNamed:@"applec.png"];
}
[cell.contentView addSubview:imgView];
[imgView release];
return cell;
}
5.cell的大小
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return CGSizeMake(130,130);
}
CircleLayout的代码:
CircleLayout.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface CircleLayout : UICollectionViewLayout
@property (nonatomic, assign) CGPoint center;
@property (nonatomic, assign) CGFloat radius;
@property (nonatomic, assign) NSInteger cellCount;
@end
CircleLayout.m
#define ITEM_SIZE 130
#import "CircleLayout.h"
@implementation CircleLayout
@synthesize cellCount,center,radius;
- (void)prepareLayout{
[super prepareLayout];
CGSize size = self.collectionView.frame.size;
cellCount=[self.collectionView numberOfItemsInSection:0];
center=CGPointMake(size.width/2, size.height/2);
radius = MIN(size.width, size.height) / 2.5;
}
-(CGSize)collectionViewContentSize{
return [self collectionView].frame.size;
}
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)path
{
UICollectionViewLayoutAttributes* attributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:path];
attributes.size = CGSizeMake(ITEM_SIZE, ITEM_SIZE);
attributes.center = CGPointMake(center.x + radius * cosf(2 * path.item * M_PI /cellCount),
center.y + radius * sinf(2 * path.item * M_PI /cellCount));
return attributes;
}
-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect{
NSMutableArray* attributes = [NSMutableArray array];
for (NSInteger i=0 ; i < self.cellCount; i++) {
NSIndexPath* indexPath = [NSIndexPath indexPathForItem:i inSection:0];
[attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]];
}
return attributes;
}
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedItemAtIndexPath:(NSIndexPath *)itemIndexPath{
UICollectionViewLayoutAttributes* attributes = [self layoutAttributesForItemAtIndexPath:itemIndexPath];
attributes.alpha = 0.0;
attributes.center = CGPointMake(center.x, center.y);
return attributes;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDeletedItemAtIndexPath:(NSIndexPath *)itemIndexPath
{
UICollectionViewLayoutAttributes* attributes = [self layoutAttributesForItemAtIndexPath:itemIndexPath];
attributes.alpha = 0.0;
attributes.center = CGPointMake(center.x, center.y);
attributes.transform3D = CATransform3DMakeScale(0.1, 0.1, 1.0);
return attributes;
}
@end
相关推荐
在iOS开发中,UICollectionView是一种强大的UI组件,用于展示可滚动的、多列或多行的数据集合。这个组件在设计用户界面时提供了极大的灵活性,允许开发者自定义布局,展示各种复杂的数据结构。本文将深入探讨...
在iOS开发中,UICollectionView是一个强大的视图组件,用于展示数据集合,可以自定义布局和单元格样式,实现...通过掌握UICollectionView的基本使用和自定义布局,开发者可以提升用户体验,打造出更具吸引力的iOS应用。
Ios Uicollectionview 2nd Edition
Fully updated for iOS 7, iOS UICollectionView: The Complete Guide, Second Edition will help you build highly immersive, cutting-edge iOS user interfaces that transform your apps from good to great!...
在iOS开发中,UICollectionView是一个非常重要的组件,它允许开发者创建高度可定制的网格布局,用于显示和操作数据集合。在标题“ios-UICollectionViewCell每次滚动设置特定的距离”中提到的问题,主要是指如何在...
iOS UICollectionView是一种常用的列表视图控件,但是当我们在使用它时,可能会遇到很多问题,其中之一就是刷新时闪屏的问题。今天,我们将探讨iOS UICollectionView刷新时闪屏的解决方法。 方法一:使用...
这个“ios-UICollectionView的简单示例.zip”文件应该包含了一个简单的项目,演示了如何使用UICollectionView来创建一个自定义的多行展示。 UICollectionView与UITableView类似,都是用来展示数据集合的视图,但...
通过这个"UICollectionView使用的demo",你应该能够学习到如何在iOS应用中创建、配置并使用UICollectionView,包括基本的数据源设置、cell的定制、布局的调整以及用户交互的处理。实践中遇到问题,记得查阅Apple的...
总之,通过使用UICollectionView和自定义UICollectionViewFlowLayout,我们可以轻松地在iOS应用中实现横向滚动的效果。这个功能不仅提供了良好的用户体验,还能适应各种屏幕尺寸和设备方向,是iOS开发中的重要工具。
本demo使用UICollectionView实现了卡片效果,自定义了UICollectionViewFlowLayout,可以修改UICollectionViewFlowLayout的配置使卡片展现不同效果
1、在一个分区拖动排序的基础上增加到两个分区可... 2、在拖动的过程中,collectionView 会自动滑动显示不可见的cell; 3、可根据自己的需求对代码进行优化更改; 4、使用中存在的bug留言即可,有时间会进行优化;
这个"ios-UICollectionView demo.zip"文件提供了一个示例,展示了如何使用UICollectionView来创建一个类似商城楼层的效果。在这个场景下,UICollectionView通常用于展示商品分类,每个楼层代表一类商品,每个单元格...
在iOS开发中,UICollectionView是一种强大的视图组件,用于展示可滚动的数据集合,它可以灵活地自定义布局和交互方式。在本教程中,我们将探讨如何实现一个具有“书架效果”的UICollectionView,用户可以通过长按并...
在iOS开发中,UICollectionView是一种强大的视图组件,用于展示可滚动的数据集合,它允许开发者创建各种自定义布局,以满足不同界面设计的需求。本话题主要关注"不规则排序",这意味着我们将探讨如何通过自定义...
iOS UICollectionView(2nd) 英文无水印pdf 第2版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
在iOS应用开发中,UIcollectionView是一种非常强大的组件,它允许开发者以各种布局方式展示数据,其中瀑布流(Waterfall)布局就是一种常见的实现方式。瀑布流布局源于网页设计,因其像瀑布一样逐级下落的视觉效果而...
这个“ios-UICollectionView滚动加载页面.zip”文件内容显然涉及到了使用UICollectionView来实现一个横向滚动并自动加载更多内容的页面。下面我们将深入探讨这个主题。 首先,UICollectionView的核心是其自定义布局...
在iOS开发中,UICollectionView是一种强大的UI组件,用于展示可滚动的、网格布局的数据集合。这个“ios-UICollectionView的简单滑动.zip”文件很显然提供了一个关于如何实现UICollectionView滑动功能的示例,包括...