Tag: uicollectionview

UICollectionView里面的UITableView处理触摸。

集合视图由单行,水平alignment的单元格组成,其大小与集合视图的边界大小相同,单个单元格填充整个屏幕。 问题是收集视图似乎是拦截所有的平底锅。 我怎样才能转发他们的表,所以我也可以垂直滚动表。 我想垂直平底锅被传递到单元格内的表,所以它可以上下滚动。 我想水平平移传递到集合视图,所以它可以水平滚动。 有任何想法吗? 谢谢。

iOS Android材质devise使用UICollectionView进行分层定时

我想使用UICollectionView在iOS中执行由Android Material Design Hierarchical Timing引入的animation 让我们说它是一个collectionView,调整视图的大小不是问题,那么及时做这个animation的最佳做法是什么。 如何执行延迟

UICollectionView contentOffset随自定义布局而变化

我有一个UICollectionView与自定义UICollectionViewLayout(实际上,我使用这个不错的布局 )。 我在viewDidLoad中设置了contentOffset = CGPointZero 。 然而,在viewDidLoad之后,偏移量是-20,内容被按下来,如下所示: (它应该与线路齐平)。 我在界面构build器中加载集合视图布局。 看来我的问题与这个问题非常相似,但是那里的解决scheme并不适合我。 我尝试修改我的布局实现中的collectionViewContentSize ,以确保它始终大于collectionView的大小。 虽然这意味着我可以滚动我的内容(它比collectionView的高度短)并隐藏额外的空间,我也可以向上滚动查看它。 没有什么似乎工作!

CollectionView背景clearColor不起作用

我正在开发一个小的collectionview“框架”,在iPad上performance得像一个浏览器标签栏(think chrome)。 代码全部完成,自定义stream程布局,重新sorting等等,并按以下方式组织: •TabBarCollectionViewController .h / .m / .xib包含集合视图的高逻辑(代表+数据源方法)。 我有xibconfigurationcollectionView设置,并设置自定义stream布局(我可以这样做编程,但哦,这很容易)。 CustomFlowLayout .h / .m(stream布局的子类) •TabBarCell.h / .m / .xib(collectionviewcell的子类) 然后我添加TabBarCVC作为一个childViewController在我的主视图控制器(这个viewController有很多childViewController和子视图),然后作为子视图。 在这一点上,所有的工作fiiiiine。 现在的问题,这是如此愚蠢,我不能相信我还没有find一种方法来做到这一点, collectionView的backgroundColor不能设置为clearColor 。 我可以把它放在灰色或任何颜色,但它不支持透明度。 单元格的背景颜色也很清晰并且可以工作。 我需要collectionView透明来显示背后的主视图的纹理。 任何有识之士都会非常感激,或者我会把我的第一个雷达填充到苹果。 如果我找不到任何解决scheme,我只需添加应该在collectionView后面的纹理“截图”,并将其添加为collectionView的backgroundView中的imageView。

UICollectionView cellForItemAtIndexPath不注册单元格

我想使用UICollectionViewCell ,因为我想显示的是一个图像。 我可以使用UIColor colorWithImage:将图像添加到单元格UIColor colorWithImage:在UICollectionViewCell的contentView属性上。 在我的loadView方法,我注册单元格如下: [self.collectionView registerClass:[ImageCell class] forCellWithReuseIdentifier:@"MyCell"]; 以下是我的cellForItemAtIndexPath方法: – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath]; // cell customization return cell; } 当我运行它时,一旦它遇到出队线,它崩溃与以下错误: *** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:] Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier […]

collectionview与水平滚动与多个部分

我想开发这样的屏幕(目标C): 在这里有部分名称: 我们爱的新游戏 我们爱的新应用程序 两者都有水平滚动和相互独立。 我的问题是我应该用什么方式来实现这个从下面两个选项。 请提供任何参考样本(如果有): 我可以用单个UICollectionView实现相同的行为,并具有不同的部分(dynamic)。 但不同部分的卷轴应该是独立的。 因为有可能第1部分可能具有不同数量的项目(行),第2部分可能具有不同数量的项目(行) 我必须采取多个collectionview以编程方式插入然后在uiscrollview(垂直scrollview)。 abd然后定义水平滚动并通过收集collectionview来添加单元格中的项目。 目前我用下面的代码做了水平滚动的collectionview: – (void)viewDidLoad { [super viewDidLoad]; self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; _collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout]; [_collectionView setDataSource:self]; [_collectionView setDelegate:self]; [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; [_collectionView setBackgroundColor:[UIColor redColor]]; [self.view addSubview:_collectionView]; // Do any additional setup after loading the view, […]

UICollectionViewFlowLayout子类在滚动和重新加载时崩溃访问数组

我有一个UICollectionView使用UICollectionViewFlowLayout的自定义子类,使节标题粘贴到屏幕的顶部,而滚动就像UITableView的普通风格。 我的代码是基于这种方法: http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using 此外,收集视图设置为当用户滚动到底部时加载更多结果。 也就是说,当用户到达集合视图的底部,一个Web请求加载更多的数据,然后重新加载集合视图,即调用reloadData。 这似乎工作得很好,除了我已经通过testing运行iOS 7和7.1的TestFlight从testing版testing人员那里得到了一些崩溃报告,他们说,当他们向下滚动到底部(即触发更多的结果加载)时偶尔会发生以下情况: *** -[__NSArrayM objectAtIndex:]: index 28 beyond bounds [0 .. 16] PRIMARY THREAD THREAD 0 __exceptionPreprocess objc_exception_throw -[__NSArrayM objectAtIndex:] -[UICollectionViewFlowLayout(Internal) _frameForItemAtSection:andRow:usingData:] -[UICollectionViewFlowLayout layoutAttributesForItemAtIndexPath:usingData:] -[UICollectionViewFlowLayout layoutAttributesForItemAtIndexPath:] -[MyCustomCollectionViewFlowLayout layoutAttributesForItemAtIndexPath:] -[MyCustomCollectionViewFlowLayout layoutAttributesForSupplementaryViewOfKind:atIndexPath:] -[MyCustomCollectionViewFlowLayout layoutAttributesForElementsInRect:] -[UICollectionViewData validateLayoutInRect:]_block_invoke -[UICollectionViewData validateLayoutInRect:] -[UICollectionView layoutSubviews] -[UIView(CALayerDelegate) layoutSublayersOfLayer:] -[CALayer layoutSublayers] 看起来好像当我的自定义stream布局代码调用[self.collectionView numberOfItemsInSection:someSection]来获取节的最后一项的布局属性时,该调用基于新加载的数据返回(例如,在这种情况下, 29项),但默认stream布局的内部仍然使用某种caching的数据(例如,在这种情况下,该部分只有17项)。 不幸的是,我不能自己再现崩溃,甚至有经验的testing者也不能一致地重现崩溃。 任何想法发生了什么?

与ContentInset的UICollectionView不滚动一路下去

我正在设置UICollectionView的内容: [_collectionView setContentInset:UIEdgeInsetsMake(0.f, 0.f, 100.f, 0.f)]; 然后我用这个方法以编程方式一直滚动到UICollectionView的底部: – (void)scrollToLastMessageAnimated:(BOOL)animated; { if (_messages.count == 0) { return; } NSUInteger indexOfLastSection = _messagesBySections.count – 1; NSInteger indexOfMessageInLastSection = [_messagesBySections[indexOfLastSection] count] – 1; NSIndexPath *path = [NSIndexPath indexPathForItem:indexOfMessageInLastSection inSection:indexOfLastSection]; [_collectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:animated]; } 它向下滚动,但忽略了contentInset,这意味着最后的单元格在指定的内容插入点之下: 左边的图像显示了在视图出现之后它现在是如何显示的。 在正确的图像中,我手动滚动到最后一条消息。 我正在使用AutoLayout,为什么会发生这种情况? 编辑: 以下是IB设置的屏幕截图:

如何在IOS中以编程方式滚动UICollectionViewCell?

我有一个垂直UICollectionView与每个单元格占用整个self.view.frame我可以轻松地向上滑动页面到下一个单元格,但我想按button做同样的事情。 我试过使用: – (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 和: – (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 他们的工作,但他们暂时“消灭”当前细胞呈现下一个细胞,而滑动显示在过渡期间的两个单元格。 理想情况下,我想使用: – (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated 但我不知道如何访问nextCell的indexPath …我试过了: NSIndexPath *nextIndexPath = [_collectionView indexPathForItemAtPoint:CGPointMake(25, (_collectionView.frame.size.height-25)*(_currentIndexRowForCellOnScreen+1))]; 其中_currentIndexRowForCellOnScreen是indexPath.row在屏幕上首次出现的UICollectionView : – (UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 但是当我把它放入: – (NSIndexPath *)indexPathForCell:(UICollectionViewCell *)cell 它在第一个Cell之后返回NULL,并且不animation…. 任何方向将不胜感激。 感谢您的时间。

UICollectionView和补充视图(标题)

试图添加一个补充视图到我的UICollectionView作为标题。 我有问题得到它的工作。 我使用自定义的UICollectionViewFlowLayout来返回一个contentSize总是至less1像素大于框架(我正在使用UIFreshControl这将只工作,如果UICollectionView滚动,并设置collectionView.contentSize直接什么都不做),并invalidateLayout上sectionInsert和itemSize更改: -(void)setSectionInset:(UIEdgeInsets)sectionInset { if (UIEdgeInsetsEqualToEdgeInsets(super.sectionInset, sectionInset)) { return; } super.sectionInset = sectionInset; [self invalidateLayout]; } -(void) setItemSize:(CGSize)itemSize { if (CGSizeEqualToSize(super.itemSize, itemSize)) { return; } super.itemSize = itemSize; [self invalidateLayout]; } – (CGSize)collectionViewContentSize { CGFloat height = [super collectionViewContentSize].height; // Always returns a contentSize larger then frame so it can scroll and UIRefreshControl will […]