uicollectionview横向的相关问题,求助

本帖子已过去太久远了,不再提供回复功能。UICollectionView高级进阶篇 - 庞海礁的个人空间
转载请注明出处:
HI,亲爱读者朋友们,又到了博客更新的时间,在经历了大半年的沉淀,目前博客日访问人次已突破400大关,最高峰达到2600人次,非常感谢各位朋友的来访,在以后的博客中争取为大家带来更多的干货。各位朋友如果有好的文章或者题材都可以推荐给我,有什么想了解的知识,都可以在下面跟我留言,或者@
在聊完几次理论后,今天给大家带来一篇关于UI的文章,看标题大家已经知道了,没错,就是大家所熟悉的UICollectionView。说起github上赫赫有名的卡片展示视图,大多数iOS开发人员或多或少都有听过或使用过,其丰富的展示样式经常出现在某些APP的一级路径,其实,苹果公司针对卡片样式祭出了自己的解决方案——UICollectionView
废话少说,先上干货
看完GIF展示的效果,各位是否已经蠢蠢欲动,这不就是视图嘛,没错!但是今天我们采用UICollectionView实现这些效果。平常开发中,最熟悉的莫过于UICollectionViewFlowLayout,其实UICollectionViewFlowLayout相当于苹果提前定义的一个特殊UICollectionViewLayout。
先看看UICollectionViewLayout类的官方文档(好吧,原谅我半天打不开苹果网址,最近敏感期,各种和谐),还是直接看代码吧,总之,自定义UICollectionViewLayout,必须实现以下几个函数
collectionViewContentSize
layoutAttributesForElementsInRect:
layoutAttributesForItemAtIndexPath:
layoutAttributesForSupplementaryViewOfKind:atIndexPath: (if your layout supports supplementary views)
layoutAttributesForDecorationViewOfKind:atIndexPath: (if your layout supports decoration views)
shouldInvalidateLayoutForBoundsChange:
看函数名就可以知道各个函数实现的功能:第一个定位View的contentSize,第二个函数定义屏幕展示的范围和数量,第三个定义cell的布局,第四个和第五个是可选项,定义SupplementaryView以及DecorationView的布局,最后一个定义是否重新布局
UICollectionViewLayout的精髓在于你可以定义每个cell的UICollectionViewLayoutAttributes属性,包括
@property (nonatomic) CGR
@property (nonatomic) CGP
@property (nonatomic) CGS
@property (nonatomic) CATransform3D transform3D;
@property (nonatomic) CGRect bounds NS_AVAILABLE_IOS(7_0);
@property (nonatomic) CGAffineTransform transform NS_AVAILABLE_IOS(7_0);
@property (nonatomic) CGF
@property (nonatomic) NSInteger zI // default is 0
@property (nonatomic) CGR@property (nonatomic) CGP@property (nonatomic) CGS@property (nonatomic) CATransform3D transform3D;@property (nonatomic) CGRect bounds NS_AVAILABLE_IOS(7_0);@property (nonatomic) CGAffineTransform transform NS_AVAILABLE_IOS(7_0);@property (nonatomic) CGF@property (nonatomic) NSInteger zI // default is 0
通过定义transform3D属性可以实现视图的旋转、放大以及透视等效果,具体实现参考
在这里格外需要强调的一点,那就是page属性,当滑动停止时,希望UICollectionView滑动到卡片的中心,而不是任意位置
UICollectionViewLayout定义函数
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity
其中 ,proposedContentOffset为系统期望滑动到的位置,velocity为加速度,你可以通过这两个参数以及当前所在的位置计算出你希望它滑动到的位置,具体算法根据需求的不同来实现
有用过我们天天动听iOS客户端或者QQ音乐的朋友,可能都非常熟悉这个动画效果,天天动听的推荐页面以及QQ音乐的电台界面,是不是就这样,嘿嘿!重要的事说三遍,赶快下载天天动听客户端,跟我们一起摇摆起来~~~
说完View,接下来聊聊Controller,谈什么了?谈谈它们之间的关系,最近业界对设计模式的话题讨论比较热烈,MVC、MVVM、MVP等等,不知道各位在实际开发中一般使用什么样的设计模式,有什么好的想法都可以在下面留言,下期再见!
Theme | Powered by更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
uicollectionview 的协议方法
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
uicollectionview 的协议方法
播放量数据:
2,869人已订阅
你可能还想订阅他们:
{{#needAdBadge}} 广告{{/needAdBadge}}
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制【uicollectionview头部】-我搜你-为您提供最新最优uicollectionview头部信息
uicollectionview头部的所有信息
&& &// 自定义头部 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 这里就可以拿到indexPath。回答(2) && &当任意一层在将其资料单元 ( data unit )往下一层传送前会先在资料前后添加一个表头 ( header ),该表头记录了该资料单元相对於该层的特性等相关资讯,而下一层收到此一附带标头的资料时,可再添加与自己层相关的表头之后再往下传,这种技巧称作...回答(1) && &你把轮播图那个View [self.collectionView registerClass:[lunboView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:findCollectionViewSectionHeaderIdentifier]; 其中lunboView继承与UICollec...回答(1) && &让我们来给应用程序添加头部和底部视图,我们利用UICollectionViewFlowLayout来实现这一点。这里的header和footer视图可以被称为流布局的补充。在默认情况下,这些视图是在流布局中禁用 /blog/2155900 详细可以参考这...回答(1) && &你把轮播图那个View [self.collectionView registerClass:[lunboView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:findCollectionViewSectionHeaderIdentifier]; 其中lunboView继承与UICollec...回答(2) && &有 而且 可以复用回答(1) && &你把轮播图那个View [self.collectionView registerClass:[lunboView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:findCollectionViewSectionHeaderIdentifier]; 其中lunboView继承与UICollec...回答(1) && &你把轮播图那个View [self.collectionView registerClass:[lunboView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:findCollectionViewSectionHeaderIdentifier]; 其中lunboView继承与UICollec...回答(1) && &你把轮播图那个View [self.collectionView registerClass:[lunboView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:findCollectionViewSectionHeaderIdentifier]; 其中lunboView继承与UICollec...回答(1)Pages: 1/2
主题 : 关于UICollectionViewCell的问题
级别: 新手上路
UID: 203073
可可豆: 298 CB
威望: 212 点
在线时间: 1298(时)
发自: Web Page
来源于&&分类
关于UICollectionViewCell的问题&&&
开发用到了UICollectionView,但是制定cell的时候,因为cell有多种样式,所以不希望重用cell。但是在方法- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{&&&&AddCustomerCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:nil forIndexPath:indexPath];}中只有这一个方法。(cell 是自定义的一个cell)。而且手动调用- (id)initWithFrame:(CGRect)frame会报错Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:cellForItemAtIndexPath: (&NSIndexPath: 0xcb51300& {length = 2, path = 0 - 0}) was not retrieved by calling -dequeueReusableCellWithReuseIdentifier:forIndexPath: or is nil (&AddCustomerCell: 0xcb30580; baseClass = UICollectionViewC frame = (0 0; 350 110); clipsToBounds = YES; opaque = NO; autoresize = RM+TM; layer = &CALayer: 0xcb33970&&)'求解,如何不重用Cell !!
级别: 新手上路
UID: 203073
可可豆: 298 CB
威望: 212 点
在线时间: 1298(时)
发自: Web Page
各位大牛出来解答下吧~~
级别: 新手上路
UID: 292043
可可豆: 83 CB
威望: 30 点
在线时间: 173(时)
发自: Web Page
你居然不要重用,那你把Cell 视图 直接添加到UIScrollView上吧&&&& 我是小菜&& 建一个float数组记录下Cell视图的起始点坐标, 之后往UIScrollView 上加&&这样就没重用了&& 希望可以帮到你
级别: 新手上路
UID: 203073
可可豆: 298 CB
威望: 212 点
在线时间: 1298(时)
发自: Web Page
回 2楼(我就是小二) 的帖子
谢谢,这也是一个办法,不过我先等等看有没有可以不用重用的方法,因为我现在这个已经写了不少了,突然发现了这个蛋疼的问题。。。因为是第一次用UICollectionView,所以很多东西不知道...
级别: 新手上路
UID: 271306
可可豆: 116 CB
威望: 75 点
在线时间: 42(时)
发自: Web Page
可不可以用静态的Cell,不过这个要在故事板才可以用的,你用了故事板吗?
级别: 新手上路
UID: 263584
可可豆: 8 CB
威望: 10 点
在线时间: 199(时)
发自: Web Page
你可以根据不同的数据制定不同的cell,在- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath返回数据需要的 在- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath返回数据需要的cell可否?
级别: 禁止发言
可可豆: 443 CB
威望: 416 点
在线时间: 1091(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
级别: 新手上路
UID: 64791
可可豆: 102 CB
威望: 79 点
在线时间: 95(时)
发自: Web Page
dequeueReusableCellWithReuseIdentifier:nil 你可以加不同的reuseridentifier的cell,根据数据用不同reuseridentifier定义的数据就好了
级别: 新手上路
可可豆: 2 CB
威望: 2 点
在线时间: 19(时)
发自: Web Page
回 6楼(lipeng930307) 的帖子
请问你的问题解决了嘛?&&我也遇到同样的问题。
级别: 禁止发言
可可豆: 443 CB
威望: 416 点
在线时间: 1091(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版}

我要回帖

更多关于 uicollectionview分页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信