Tag: uicollectionview

UICollectionView横向滚动,删除最后一项,animation不能正常工作

我有一个UICollectionView。 它水平滚动,只有一行项目,行为像一个分页UIScrollView。 我正在沿着Safari标签页select器的东西做一些东西,所以你仍然可以看到每个项目的边缘。 我只有一个部分。 如果我删除不是最后一个项目的项目,一切都按预期工作,一个新项目从右侧滑入。 如果我删除最后一个项目,那么集合视图的滚动位置跳转到第N-1个项目(不平滑地animation),然后我看到第N个项目(我删除的那个)淡出。 此行为与我所做的自定义布局无关,因为即使将其切换为使用普通stream布局,也会发生此行为。 我正在删除项目使用: [self.tabCollectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]]; 有没有人经历过这个? 这是在UICollectionView中的错误,是否有一个解决方法?

UICollectionView装饰和补充意见不能被移动

在UICollectionView装饰和补充意见似乎是一个很大的谜。 目前似乎没有示例代码。 我设法让这两种types在自定义布局中工作(请参阅这篇文章的一些细节)。 只要他们保持在相同的位置,一切都很好(即如果他们的layoutAttributes.frame不会改变)。 然而,只要我改变layoutAttributes为装饰或补充意见,他们得到视觉复制 – 即有一个在他们的原始位置的背景和副本在他们的新位置副本。 如果我从XIB实例化它们或完全在代码中并且行为不发生在正常单元格中,则行为是相同的。 起初,我认为这是一种重绘问题,但这些“副本”生存重新布局,重绘等,但他们不是真正的副本,因为layoutAttributesForDecorationView等从未被调用(只为新的位置) 。 在UICollectionView的背景中似乎有一些caching。 有没有人得到这个工作或有任何想法。 我必须说我是iOS平台的新手,所以它也可以是简单的事情,如设置“剪辑绑定”或“清除graphics上下文”属性(我尝试过,但可能是类似的东西)。 这让我疯狂,奇怪的是,那里绝对没有示例代码。 我在问自己:装修和补充意见是不是要重新定位? (我希望不是)

UICollectionView setLayout:animation:不保存zIndex

我注意到,当调用setLayout:animated在UICollectionView进行setLayout:animated切换两个布局之间,当前可见的单元格不符合zIndex它的布局属性已在layoutAttributesForItemAtIndexPath:设置layoutAttributesForItemAtIndexPath: 。 例如,如果我有UICollectionView与UICollectionViewFlowLayout ,将其minimumLineSpacing设置为负数,以便单元格重叠,然后将每个单元格上的zIndex设置为高于以前的单元格,那么它看起来好像单元格从自下而上 但是,如果我将布局设置为另一个布局,然后返回到原始布局,则会中断。 就好像当前可见的单元格不会听取zIndex并放置在其他单元格的顶部。 如果我滚动屏幕外的单元格,然后回到正确的位置。

如何获得有很多图像(50-200)snappy UICollectionView?

我在一个显示相当多的照片(50-200)的应用程序中使用UICollectionView ,我遇到的问题变得活泼(像照片应用程序一样快)。 我有一个自定义UICollectionViewCell与UIImageView作为它的子视图。 我将UIImage.imageWithContentsOfFile:从文件系统加载到单元格内的UIImageViews中。 现在我已经尝试了很多方法,但是它们一直是越野车或性能问题。 注意:我使用RubyMotion,所以我会用Ruby风格编写任何代码片段。 首先,这里是我的自定义UICollectionViewCell类供参考… class CustomCell < UICollectionViewCell def initWithFrame(rect) super @image_view = UIImageView.alloc.initWithFrame(self.bounds).tap do |iv| iv.contentMode = UIViewContentModeScaleAspectFill iv.clipsToBounds = true iv.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth self.contentView.addSubview(iv) end self end def prepareForReuse super @image_view.image = nil end def image=(image) @image_view.image = image end end 方法#1 保持简单 def collectionView(collection_view, cellForItemAtIndexPath: index_path) cell […]

UICollectionView – 下载图像并有效地重新加载数据,比如Instagram

我注意到像Intagram这样的应用程序使用UICollectionViews来显示照片的提要。 我也注意到这些照片的单元格在实际的照片被完全下载之前以某种方式放置在屏幕上。 然后,当下载完成时,该照片很好地显示在正确的单元格中。 我想复制这个function,但我不知道如何去做。 我目前正在下载一个大的JSON对象,我转换成一个NSDictionaries数组。 每个NSDictionary包含有关每张照片的信息,并且在这些信息当中显示一个URL。 在这个URL,我可以find我需要下载并显示在我的UICollectionViewCells相应的图像 至于现在,我迭代这个列表,并开始下载我看到的每个URL。 当下载完成后,我使用[self.collectionView reloadData]重新加载collectionview。 但是,正如你所想象的,如果我有30个单元都需要一个图像,那么会有很多reloadData调用。 我正在使用AFNetworking来处理下载,这里是我根据我之前提到的URL调用的方法: -(void) downloadFeedImages:(NSString *) photoURL imageDescs:(NSDictionary*)imageDescs photoId:(NSString *)photoID{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *directory = [paths objectAtIndex:0]; NSString* foofile = [directory stringByAppendingPathComponent:photoID]; if([[NSFileManager defaultManager] fileExistsAtPath:foofile]){ // IF IMAGE IS CACHED [self.collectionView reloadData]; return; } NSLog(@"photoURL: %@", photoURL); NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL […]

UICollectionView:如何获得节的标题视图?

有一种通过indexPath ( UICollectionView cellForItemAtIndexPath:获取单元格的方法。 但是我不能find一种方法来获得像页眉或页脚之类的补充视图之后的任何想法吗?

不能与UICollectionView使用UISearchController?

在WWDC 2014的演讲“A Look Inside Presentation Controllers”中,演示者展示了如何在UITableView中设置UISearchController。 他们通过设置searchController的searchBar框架,然后将其设置为tableView的tableHeaderView。 不幸的是,没有相当于UICollectionView的tableHeaderView。 使用UISearchDisplayController,这将很简单:创build一个UISearchBar并将其添加到自定义的UICollectionView节头中,然后使用search栏初始化UISearchDisplayController。 问题是,你不能用UISearchBar初始化一个UISearchController,或者甚至设置searchBar,因为它是一个只读属性。 我想我真正的问题是,我有什么select? 没有UISearchDisplayController或UISearchController实现search的“好”的方式吗?

无限滚动UICollectionView的两个方向与部分

我有一个类似于iOS日历的月视图,并使用了UICollectionView 。 现在实现一个无限的滚动行为将是有趣的,这样用户可以在每个方向垂直滚动,并且永远不会结束。 现在的问题是如何有效地实施这样的行为? 这是我现在发现的: 基本上你可以检查你是否在当前的滚动视图的末尾。 您可以在scrollViewDidScroll:或在collectionView:cellForItemAtIndexPath: 。 向数据源添加另一个内容很简单,但我认为还有更多。 如果只添加数据,则只能向下滚动。 用户应该能够双向滚动(向上,向下)。 不知道是否reloadData会做的伎俩。 contentOffset也会改变,不应该有跳跃的行为。 另一种可能性是使用WWDC 2011的 高级滚动视图技术中显示的方法。 这里layoutSubviews用于将contentOffset设置为UIScrollView的中心,子视图的框架被调整到与中心距离相同的距离。 如果我没有部分,这种方法将工作正常。 这将如何与部分工作? 我不想使用高数值的部分来伪造无限滚动,因为用户会发现结束。 另外我不使用任何分页。 那么我怎样才能实现集合视图的无限滚动? 编辑: 现在我试图增加节的数量,如果我打到UICollectionView 。 要显示新的部分,必须调用reloadData 。 在调用此方法时,所有当前可用部分的所有计算都会再次完成! 滚动查看集合视图时,此性能问题会导致严重的结果,如果向下滚动,则会变得越来越慢。 不知道是否可以在后台线程上传输这个工作。 采用这种方法,如果您进行必要的调整,可以向上和向下滚动。 赏金: 现在我提供回答这个问题的赏金。 我对如何实现iOS日历的月视图感兴趣。 详细介绍无限滚动是如何工作的。 在这里它在两个方向上(向上,向下)工作,它永远不会结束(真正的无限 – 不重复)。 也没有任何滞后(即使在iPhone 4上)。 我想使用UICollectionView ,数据由不同的部分组成,每个部分都有不同数量的项目。 人们必须做一些计算来得到下一部分。 我不需要日历部分 – 只有在一个部分中的不同项目的无限滚动行为。 随意问问题。 添加部分: public override void Scrolled(UIScrollView scrollView) { NSIndexPath[] […]

UICollectionView报纸喜欢布局

可以弯曲UICollectionView来dynamic呈现下面这样的接口(News for iPhone)吗? 或者只能预定义静态布局? 我想要根据图像尺寸(hxw)进行布局,比如小图像的小网格和大图像的小网格,这些都是在运行时根据我从数据源获得的数据决定的。 编辑:复杂的dynamic布局像上面的任何好的教程?

UICollectionView单元格select

我做了一个图像的网格,为了显示它的select,我画了边界的图像,当select。 但问题是,当我select顶部的图像,并向下滚动图像的网格,底部的其他图像也似乎被选中。 下面是我的代码片段: UINib *cellNib = [UINib nibWithNibName:@"collectionCell" bundle:nil]; [self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cellCV"]; UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; [flowLayout setItemSize:CGSizeMake(95, 95)]; [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical]; [self.collectionView setCollectionViewLayout:flowLayout]; 上面已经添加了viewDidLoad与在nib中devise的集合视图单元格。 并实行以下代表: -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { selectedImageIndex = indexPath.row; [collectionView reloadData]; } -(CollectionCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { UIImage *img = [imageArray objectAtIndex:indexPath.row]; static NSString *cellIdentifier = @"cellCV"; CollectionCell […]