苹果开发 笔记(34)UICollectionView

来源:互联网 发布:esxi5安装mac os 编辑:程序博客网 时间:2024/05/29 03:04

这两天一边整理UIkit的用法,一边在继续做一些练习。在投放简历的时候,我会发现每家公司要求的都不一样,有一些针对图形方面 app比较多,要求会coreText、 Textkit、 等文本处理 排版而图片处理App 则需要coreImage 、CGGraphics这个方面知识比较多。有一些需要表现,需要动画方面CA方面。结合第三方方面 有需求CpuImage 、Http请求AFNetWorking、等。

今天早上纠结一个UICollectionView 在Main.Storyboard的关联问题,无论怎样都无法显示出来。于是很纳闷,如果用纯代码,我肯定可以实现到。为了找到问题。我也尝试几种方式尝试。最后发现一个2B问题坑了自己。

创建一个控制器,继承UICollectionViewController,这种方式在拖放到storyboard的时候,我几次都遇到一个很奇怪的问题。默认情况下,ios8 拖进去的图形都是正方形显示(size class 开启时候)。我以这种方式将想显示组件继续拖进这个正方形上。这次一切都安好。然而,我切换尺寸的时候,换了一个方式,view显示的组件再也点不到了。解决的笨方法,不得不要重新创建一个,先定好尺寸再拖组件。这个就是使用storyboard 遇到其中一个很莫名的地方。
这里写图片描述

使用这个组件时候,同样遇到一个奇怪问题。不设置Layout的方式也会发生报错的情况。后来加上去才好。当我去掉了后来也可以不设置也没报错。
真是奇怪事情。

UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init];flowLayout.itemSize = CGSizeMake(120, 120);[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];[self.collectionView setCollectionViewLayout:flowLayout];

这里写图片描述

最让我想不到的事情,我关联一个UIcollectionViewCell,然后又注册这个,结果我发现这句话导致我一直UIcollectionViewCell 显示不出来的原因。去掉即可。在Storyboard 已经做了一个创建一个UIcollectionViewCell的时候,这行代码则不需要加
这里写图片描述
否则就是要加上这句话才能注册进去。使用Storyboard 的时候,遇到各种奇奇怪怪的问题。之前忘记在组件上设置dataSource 和delegate关联的时候导致UITableView 显示不到数据。这些都是使用的时候往往会忘记的。所以今天记录下来

[self.collectionView registerClass:[KCollectionViewCell class] forCellWithReuseIdentifier:@"KCollectionViewCell"];

设置代理关联。
这里写图片描述

-(NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView{    return  [self.heroDatas count]/2;}-(NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{    return 2;}-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{  KCollectionViewCell *cell =[collectionView dequeueReusableCellWithReuseIdentifier:@"KCollectionViewCell" forIndexPath:indexPath];    NSDictionary *dictionary =[self.heroDatas objectAtIndex:indexPath.section *2 + indexPath.row];    return cell;}

KCollectionViewCell 自定义的类。这个代理方式和UITableView的方式类似,有几个组件使用方式也类似的。就是很多时候API都不知道怎样用,除了靠猜,靠查询,还真是看文档。

遇到几个问题:MainStoryboard 拖放了控制后,在选定了尺寸方式后,如果再改就会出现组件原先的组件不能再点问题。

2.注册UICollectionViewCell时候,要注意看是否已经在控制器内部CollectionView拖放进来,还是自定义纯代码书写。

除此之外,还有一些获取控制器的方式如下UIStoryboard 的方式来获取。

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"firstViewController"]; [self.navigationController pushViewController:vc animated:YES];

今晚到此为止,好,明天继续修正这个。

0 0
原创粉丝点击