iOS UICollectionView的使用(用storyboard和xib创建)

1. 在storyboard中,拖出1个UICollectionViewController

2. 新建file--Cocoa Touch Class,继承自UICollectionViewController,假设名字是CollectionDemo

3. 在storyboard, 把刚才拖出来的UICollectionViewController的class改成CollectionDemo

4. 在 CollectionDemo.m 中实现,数据源方法

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

{

return self.photos.count;

}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *ID = @"cell";

CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];

cell.imageView.image = [UIImage imageNamed:self.photos[indexPath.item]];

return cell;

}

5. 修改storyboard的CollectionViewCell,比如修改背景色,放一张图片,设置图片的约束,最重要的是修改重用标记为cell,也就是要和代码里写的相一致

6. 新建自定义collectionViewCell类,添加输出口,也就是和storyboard的控件做连线

@interface CustomCell : UICollectionViewCell

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

7. 运行效果

8. 和纯代码创建CollectionView相比,省了如下步骤

[collectionView registerClass:[CustomCell class] forCellWithReuseIdentifier:ID]; // 注册cell

UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:[[UICollectionViewFlowLayout alloc] init]]; // 初始化的时候,指定布局

// 还有自定义cell的构造方法

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

UIImageView *imageView = [[UIImageView alloc]init];

imageView.frame = CGRectMake(5, 5, 40, 40);

[self addSubview:imageView];

_imageV = imageView;

}

return self;

}

注:storyboard拖出来的collectionViewController默认就是流水布局

四种注册方法的异同

- (void)registerClass:(Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier;

- (void)registerNib:(UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier;

- (void)registerClass:(Class)viewClass forSupplementaryViewOfKind:(NSString *)elementKind withReuseIdentifier:(NSString *)identifier;

- (void)registerNib:(UINib *)nib forSupplementaryViewOfKind:(NSString *)kind withReuseIdentifier:(NSString *)identifier;

cell是代码创建的用第1种;

如果cell是xib创建的,用第2种;

下面2个是用于注册补充视图,补充视图类似于tableView的 SectionHeader,SectionFooter,它通过elementKind参数区别补充视图头还是补充视图尾,尾UICollectionElementKindSectionFooter  头UICollectionElementKindSectionHeader

时间: 2024-10-18 16:47:02

iOS UICollectionView的使用(用storyboard和xib创建)的相关文章

IOS开发——UI进阶篇(八)pickerView简单使用,通过storyboard加载控制器,注册界面,通过xib创建控制器,控制器的view创建,导航控制器的基本使用

一.pickerView简单使用 1.UIPickerViewDataSource 这两个方法必须实现 // 返回有多少列 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; // 返回第component有多少行 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

iOS之分别使用代码和storyboard、xib为控件设置圆角(以按钮为例)

首先我们看一下代码是如何给按钮设置圆角的: 我们再来看看如何在storyboard或xib中给按钮设置圆角: 1.在storyboard或xib中添加按钮后,设置标题和背景色,做好约束: 2.点击 Show the identity inspector 按钮:按钮位置如下图所示: 3.然后在User Defined Runtime Attributes 栏为按钮添加layer.cornerRadius属性,类型为Number,根据需求设置一个Value值.如下图所示: 4.到这里基本完成了对按钮

ios学习记录 day44 UI20 Storyboard 高级可视化编程 + 单例

可视化编程 : 5.0之前 xib  5.0之后 Storyboard 注意事项:1.在AppDelegate中不用代码初始化一个window   2.在general  设置 Main Interface(创建的时候自动设置的) weak可以指向 但是没有拥有权   strong有拥有权 单例特性: 1.唯一性  创建的对象永远指向同一块内存地址     2.不释放   从打开程序到后台关闭 对象都不释放 单例安全:加锁@synchronized  防止同一块内存被创建两次,破坏唯一性 //单

自定义不等高cell—storyBoard或xib自定义不等高cell

1.iOS8之后利用storyBoard或者xib自定义不等高cell: 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView(cell的contentView)之间的间距约束(需要代码控制约束) 设置tableViewCell的真实行高和估算行高 // 以下两行代码就被苹果成为self0sizing技术,可惜只能在iOS8及其之后应用 // 告诉tableView所有cell的真实高度是自动计算(根据设置的约束来计算) self.tableVie

iOS UICollectionView与UITableView

共同点:都需要接受两个协议 并执行代理方法 不同点:初始化方法不同  UITableVIew可以用alloc 方法初始化 而UICollectionView必须用下面方法初始化 // 初始化瀑布流 UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; [flowLayout setItemSize:CGSizeMake(150,120)]; //设置每个cell显示数据的宽和高必须

[BS-13] 创建和注册UITableViewCell及Storyboard和Xib区别

创建和注册UITableViewCell及Storyboard和Xib区别 // 界面创建完成被调用 - (void)viewDidLoad { [super viewDidLoad]; /** 如果采用如下3种方式,为tableView注册了原形Cell,系统会用注册的cell作为显示用的cell和可重用cell,一旦缓冲区中不存在可重用cell,系统会使用注册的原形Cell新实例化一个Cell供程序使用! 因此只要注册了原形Cell,创建cell时就不再需要cell == nil的判断了.

storyboard或者Xib给View设置边框属性(颜色,宽度,圆角)

纯代码设置Button或者其他View的边框属性 例: UIView* view = [[UIView alloc]init]; view.layer.borderWidth = 2.0; view.layer.masksToBounds = YES; view.layer.cornerRadius = 5.0; view.layer.borderColor = [UIColorredColor].CGColor; 以下提供自定义控件的时候,使用Xib,或者用sb来进行布局,那么这时候怎么来使用

软件界面---文件--- storyboard和xib的区别

1.storyboard:描述软件界面,重量级,一般描述整个软件的所有界面 2.Xib:描述软件界面,轻量级,一般用来描述局部界面(xib的本质---转化为代码) storyboard和xib都是描述软件界面的文件,storyboard一般描述整个软件界面,xib用来描述局部界面,当发现storyboard上有许多相同的子视图块的时候,用局部的xib描述子视图,当读取xib文件的时候,会读取xib文件中的所有的对象,用数组接收. NSBundle *bundle = [NSBundle main

Storyboard、xib中的UIScrollView使用autolayout,使其能够滚动

Storyboard.xib中的UIScrollView使用autolayout,使其能够滚动 在使用storyboard和xib时,我们经常要用到ScrollView,还有自动布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说一下我的理解,在故事板或xib中,ScrollView是根据其下面的一个View的大小来确定ContentSize的大小. 看一下效果 1. 创建一个项目,拖拽一个ScrollView到故事板中,如下图 2