ios uicollectionviewcell为什么在ipad加载不出来

【iOS】UIcollectionview&&显示超过屏幕时,上下滚动之后,数据出现重复和错乱现象--解决办_游溟丶_新浪博客
【iOS】UIcollectionview&&显示超过屏幕时,上下滚动之后,数据出现重复和错乱现象--解决办
解决方法图
&在图的红框位置加入下面代码:
for (UIView *view
cell.contentView.subviews)
removeFromSuperview];
解决,环境xcode7.2.1,iOS 6.0------ 9.2.1
博客等级:
博客积分:0
博客访问:26,110
关注人气:0
荣誉徽章:iOS 解决UICollectionView 计算 Cell 大小的问题
字体:[ ] 类型:转载 时间:
本文主要介绍iOS UICollectionView,这里给大家一个实例代码作为参考,并指出经常遇到的问题和解决办法,希望能帮助有需要的小伙伴
  API 不熟悉导致的问题,想当然的去理解果然会出问题,这里记录一下 UICollectionView 使用问题。
  陷阱一:minimumLineSpacing、minimumInteritemSpacing
    很容易就把这两个属性设置为 0 ,这两个属性是最小行间距和最小列间距,注意是最小!!也就是说实际上可以 & 0 ,并不是间距就是 0
  陷阱二:sectionInset
    设置 cell 的边距。一开始我以为是每一个 cell 的边距,相邻之间会叠加效果,实际上并不是这样的,这个属性只是保证相邻之间的间距,并不叠加!!
  理解了上面两个陷阱,我们就可以精确计算 Cell 的大小了,再来设置 itemSize 的大小才会正确。例如:
let ITEM_MIN_WIDTH: CGFloat = 300
let ITEM_SPACING: CGFloat = 6
func resizeCollectionView(size: CGSize) {
if let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
layout.minimumLineSpacing = ITEM_SPACING
layout.minimumInteritemSpacing = ITEM_SPACING
var itemCount = Int(size.width / ITEM_MIN_WIDTH)
if itemCount == 0 {
itemCount = 1
if itemCount == 1 {
layout.itemSize = CGSizeMake(size.width, size.width * 10 / 16)
layout.sectionInset = UIEdgeInsetsMake(6, 0, 0, 0)
let width = (size.width - CGFloat((itemCount + 1)) * ITEM_SPACING) / CGFloat(itemCount)
layout.itemSize = CGSizeMake(width, width * 10 / 16)
layout.sectionInset = UIEdgeInsetsMake(ITEM_SPACING, ITEM_SPACING, 0, ITEM_SPACING)
collectionView?.layoutIfNeeded()
代码说明:
  传入当前 view 的 size ,动态计算 cell 大小,可以方便的适配 iPhone/iPad ,单列时隐藏两边边距,多列时显示两边间隙。
以上就是对IOS UICollectionView 用法和说明,希望能帮助&IOS开发的朋友。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请允许我用Storyboard来表明我的需求。
如图,在这个tableview里面有两个大的cell,一个是另外tableview,一个是collectionview。而且这两个大的cell的高度不是固定的,当点击加载更多的时候,对应的cell里面的tableview长度会增长,cell也会增长(换言之,在这两个cell里面所有内容都需要被全部展示,而不是滑动)。请问如果是这种需求的话,该如何设计呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的情况其实仅仅一个collectionView就可以搞定了,根据数据源分组对应分几个section,展示更多时候,就修改对应section中的数据源,刷UI就好了,你所“必须”要关注的是你的CollectionView的contentSize以及如何Layout,还有优化的话考虑Cache layout类中的attributes.
今天刚刚这么写了collectionView嵌套collectionView(被要求的,不是没事找事),说下思路(TableView嵌套做法类似,XIB/SB与纯代码区别请忽略...)PS: 有写错的地方,希望- -CollectionView大神来喷..Orz
1)自定义cell
需要挂collectionView的cell里面贴如下代码:
@class WBrowserWhisperFlowL
static NSString *BrowserWhisperCoverFlowCellIdentifier = @"BrowserWhisperCoverFlowCellIdentifier";
@interface WBrowserWhisperCoverFlowCell : UICollectionViewCell
@property (nonatomic, strong) WBrowserWhisperFlowLayout *
@property (nonatomic, strong) UICollectionView *collectionV
- (void)setCollectionViewDataSourceDelegate:(id&UICollectionViewDataSource, UICollectionViewDelegate&)dataSourceD
- (instancetype)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
_layout = [[WBrowserWhisperFlowLayout alloc] init];
_layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
_layout.itemSize = CGSizeMake(CGRectGetWidth(self.frame) - 100, 200);
_layout.scrollDirection = UICollectionViewScrollDirectionH
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:_layout];
[_collectionView registerClass:[WBrowserWhisperCoverFlowItemCell class] forCellWithReuseIdentifier:BrowserWhisperCoverFlowItemCellIdentifier];
_collectionView.backgroundColor = [UIColor whiteColor];
_collectionView.showsHorizontalScrollIndicator = NO;
_collectionView.pagingEnabled = YES;
[self.contentView addSubview:_collectionView];
- (void)layoutSubviews {
[super layoutSubviews];
_collectionView.frame = self.contentView.
- (void)setCollectionViewDataSourceDelegate:(id&UICollectionViewDataSource, UICollectionViewDelegate&)dataSourceDelegate {
_collectionView.dataSource = dataSourceD
_collectionView.delegate = dataSourceD
[_collectionView reloadData];
2)记住在cell中的CollectionView是在cell之后初始化的,也就是在初始化这个cell的之后要立即设置这个cell中CollectionView的数据源跟代理,不然Crash没商量。
3.1)修改cell中CollectionView的数据源(若有变化,比如数据主动/被动修改),然后修改该CollectionView属性(layoutAttribute会被修改)以及重新layout两个CollectionView。(tableView则是reloat对应的indexPath)
4)继续吐槽:CollectionView的精髓在于会不会写layout。。CollectionView让TableView可以say goodbye了,但是需要花一定的时间去学习否则很难用好,推荐资源:
iOS UICollectionView, 2nd Edition 电子书
RayWench视频
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
建议不要在 cell 里套 tableView
在 cell 里再加 UITableView,理论上或许可行(让外层 cell 作为内层 tableView 的 delegate),但我从没见过这样的写法,也感觉这样很不好。原因有2:
delegate 复杂,view 的层叠关系复杂
这样反而不能达到你的需求。你说想要:
对应的cell里面的tableview长度会增长,cell也会增长(换言之,在这两个cell里面所有内容都需要被全部展示,而不是滑动)
但 UITableView 的高度是固定的,里面是 ScrollView。它天然是适合滚动的,而不是全部显示。
可能的代替做法
我觉得这个需求可以考虑能否把这上下两个大 cell 考虑为两个 section?上面的大 cell 改成第一个 section,里面的 cell 里左边有图片、右边两个 label 的,footer 或最后一个 cell 是“加载更多”;下面的大 cell 改成第二个 section,里面根据你 collectionView 的情况而定。比如是本来是一行排5个,可以是每个 cell 里排5个;也可以是全排在一个 view 里,把这个 view 添加到唯一的 cell 上或添加到 headerView 上。然后 footer 或最后一个 cell 是加载更多。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
请使用这个方法。
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果你要在uitablewview里加一个uitableview的话,可以上网找找有没有开源的。我记得我是看到过的。
如果你在uitableview里加一个uicollection的话。我提供一个想法。因为之前的项目里遇到过一个类似的问题。说一下我的思路。
因为uitableview是支持定义cell的,可以在cell里写一个collectionview,然后在定义你的collectioncell。绝对是可行的,而且个人感觉代码量不是很多。加载数据的时候每次向cell里传递数据,然后collectionview会加载这些数据。
你可以通过代码来在cell里计算高度,这个是可以实现的。
因为电脑不在身边...就不贴代码了,如果需要的话可以给我留言我周一贴一段我写的uitableview+collection搭配的代码
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知君,已阅读到文档的结尾了呢~~
iOS开发UICollectionView的构建及使用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
iOS开发UICollectionView的构建及使用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 ios uicollectionview 的文章

 

随机推荐