Tag: uicollectionview

animationUICollectionView contentOffset不显示不可见的单元格

我正在做一些类似于ticker的function,并使用UICollectionView 。 它最初是一个scrollView,但我们认为一个collectionView会使添加/删除单元格更容易。 我用下面的animationcollectionView: – (void)beginAnimation { [UIView animateWithDuration:((self.collectionView.collectionViewLayout.collectionViewContentSize.width – self.collectionView.contentOffset.x) / 75) delay:0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState) animations:^{ self.collectionView.contentOffset = CGPointMake(self.collectionView.collectionViewLayout.collectionViewContentSize.width, 0); } completion:nil]; } 这对于滚动视图来说工作正常,并且animation正在收集视图中发生。 但是,只有在animation结尾可见的单元格才会被渲染。 调整contentOffset不会导致cellForItemAtIndexPath 。 如何在contentOffset更改时获取单元格? 编辑:多一点参考(不知道是否有多大的帮助): – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { TickerElementCell *cell = (TickerElementCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"TickerElementCell" forIndexPath:indexPath]; cell.ticker = [self.fetchedResultsController objectAtIndexPath:indexPath]; return cell; } – […]

在iOS 8中嵌套UICollectionViews,AutoLayout和旋转

我开始使用AutoLayout进行大型项目,并对此感到惊喜。 但是,现在我不得不调整项目来适应轮换和大小类,并且我有很大的麻烦让观点行为正确。 基本的问题是,我有UICollectionViews的细胞,再次包含UICollectionViews 。 当设备旋转时,基本集合视图将其单元格调整为正确,但嵌套的集合视图中的所有单元格都不会自动调整为新的大小。 经过调查后归结为: 当调用viewWillTransitionToSize ,基础集合视图还没有旋转(如预期的那样) 在调用viewDidLayoutSubviews之后的一段时间,基础集合视图现在具有旋转的大小 – 但不幸的是,它的单元格还没有 – 它们仍然具有旋转之前的宽度 即使在coordinator animateAlongsideTransition … completion:{} block viewWillTransitionToSize单元格还没有新的宽度。 上面的意思是没有地方可以告诉嵌套集合视图的单元格来改变它们的大小,因为我还不知道新的宽度。 自动布局系统不会自动调整它们。 其他人是否有同样的问题或知道解决scheme?

如何旋转UICollectionView类似的照片应用程序,并保持当前视图居中?

我有一个使用UICollectionView和UICollectionViewFlowLayout的照片库视图,它具有pagingEnabled和水平滚动一次只显示一个视图。 很好的工作,直到我试图旋转它… 当我旋转设备,在willRotateToInterfaceOrientation:duration:我更新collectionView.contentOffset ,使其保持在正确的项目,我调整currentCell,以便animation到新的维度。 问题在于两个状态之间的animation,“上一个”方向从左上angular开始animation,并进入视图中的其他单元格。 我在做什么错误的是,在屏幕上animation的视图是FUBAR? 这是它在行动中的样子: http://www.smugmug.com/gallery/n-3F9kD/i-BwzRzRf/A (忽略波涛汹涌的video,那是Quicktime的错:p) 这是我的willAnimateRotationToInterfaceOrientation:duration : – (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; // Update the flowLayout's size to the new orientation's size UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout; if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height); } else { flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height); } self.collectionView.collectionViewLayout = flow; [self.collectionView.collectionViewLayout invalidateLayout]; // Get […]

如何使用swift在UICollectionView中获取单元格的索引?

我正在编程集合视图。 这里是viewDidLoad函数中的代码 let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.sectionInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20) layout.itemSize = CGSize(width: 90, height: 120) collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) collectionView!.dataSource = self collectionView!.delegate = self collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell") collectionView!.layer.cornerRadius = 2 collectionView!.backgroundColor = UIColor.redColor() self.containerView.addSubview(collectionView!) 这些是我的collections查看function func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } […]

为什么UICollectionView在单元格全屏时logging错误?

我有一个使用UICollectionViewFlowLayout ,其中我的itemSize是itemSize的大小。 基本上,这是每个单元格全屏并水平滚动的单元格的行布局。 在我的UICollectionViewFlowLayout子类中,我重写了prepareLayout ,如下所示: – (void)prepareLayout { self.itemSize = self.collectionView.frame.size; self.scrollDirection = UICollectionViewScrollDirectionHorizontal; self.collectionView.pagingEnabled = YES; self.minimumLineSpacing = 0.0; self.minimumInteritemSpacing = 0.0; self.sectionInset = UIEdgeInsetsZero; self.footerReferenceSize = CGSizeZero; self.headerReferenceSize = CGSizeZero; } UICollectionViewController是非常基本的在一个部分返回10个项目。 我已经在GitHub上包含了一个示例项目来获取更多细节。 一切似乎设置正确。 它在模拟器和设备上看起来是正确的,但是当收集视图显示时,会有一个错误logging到控制台: the behavior of the UICollectionViewFlowLayout is not defined because: the item height must be less that the height […]

UICollection View调整屏幕大小的单元大小

目前我有一个采集视图占用我的大部分屏幕在3.5英寸的屏幕大小。集合视图是从顶部51像素,从屏幕的底部20像素。 我正在使用UIPageControl的单元UIPageControl来创build分页布局,每页一个单元格。 当切换到4英寸的大小,使用约束我可以得到collections视图扩大到新的空间(保持51像素从顶部和20从底部),但单元格大小保持不变,所以现在有一堆在单元格顶部和底部的空白空间。 我尝试使用约束,但似乎你不能为单元格设置它们。 如何扩大单元尺寸以填充iPhone 5上的空白空间? 集合视图代码是刚刚 – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; return cell; } 布局在IB中设置我想在添加更多内容之前先让布局工作

在设置节插页时,带有FlowLAyout的UICollectionView不滚动

我以编程方式使用UICollectionView。 我已经设置它的框架如下: UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 3000) collectionViewLayout:flowLayout]; 我的UICollectionViewFlowLayout有一个部分插入设置为: flowLayout.sectionInset = UIEdgeInsetsMake(20.0, 20.0, 100.0, 20.0); 我也只有1节。 我已经将高度设置为3,000,以查看集合视图是否滚动,但不是。 我设置它,因为集合视图似乎没有向上或向下滚动时,我插入新的项目。 UICollectionView是从UIScrollView子类,这意味着我可以保持重置滚动视图的内容大小。 这会正常工作吗? 唯一的问题是,如果我知道所有项目的大小,包括每行有多less项目,这将工作。 如果每个项目有不同的大小,我怎样才能找出每一行的大小? 我将需要添加所有行大小,并增加self.collectionView的内容大小的高度。 编辑 即使我上面的build议,重置内容大小,不能正常工作! 更新我的集合视图时,我尝试了以下方法: int numberOfRows = self.dataArray.count / 3; self.collectionView.contentSize = CGSizeMake(self.view.frame.size.width, (numberOfRows * 200) + 300); 这很丑陋。 这是因为它假设我所有的图像大小为200x200px,每行适合3个图像(因此除以3)。 而且,即使是我有的+300,最后一行我也只能看到3/4,而不是全部。 我必须滚动更多,我将能够看到它,但它又回到3/4。 它有点像滚动刷新,只有拖动视图才会移动视图,当你离开它时,视图会回滚到原来的位置。 为什么发生这种情况? 苹果devise的UICollectionView如此糟糕吗? 这是有点荒谬的… UITableViews自动调整他们的滚动根据他们的内容。

如何用indexpath.row从UICollectionView中删除一个项目

我有一个集合视图,我试图从didSelect方法的集合视图中删除一个单元格。我成功地使用了下面的方法 [colleVIew deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]]; 但现在我需要删除button上的项目单击CollectionView Cell.Here我只得到indexpath.row。 从这我不能删除项目。 我试过这样 -(void)remove:(int)i { NSLog(@"index path%d",i); [array removeObjectAtIndex:i]; NSIndexPath *indexPath =[NSIndexPath indexPathForRow:i inSection:0]; [colleVIew deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]]; [colleVIew reloadData]; } 但是需要重新加载CollectionView,所以删除后的单元格排列animation就不存在了。 请提出一个想法..提前感谢

我如何定制我的UICollectionViewCell子类的select状态?

我有一个自定义的UICollectionViewCell子类覆盖initWithFrame:和layoutSubviews设置其视图。 但是,我现在正在尝试做两件事情,我遇到了麻烦。 1)我试图在select时自定义UICollectionViewCell的状态。 例如,我想更改UICollectionViewCell中的UIImageView中的一个图像。 2)我想animation( UICollectionViewCell )在UICollectionViewCell的UIImage 。 任何人都可以指向正确的方向吗? – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { MyCollectionViewCell *cell = (MyCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath]; [cell setSelected:YES]; }

animationUIScrollView contentInset导致跳跃口吃

我实现了一个自定义的刷新控制(我自己的类,而不是一个子类),出于某种原因,因为移动到iOS 8,设置滚动视图(具体来说,UICollectionView)的contentInset开始刷新animation会导致一个奇怪的跳跃/口吃。 这是我的代码: – (void)containingScrollViewDidScroll:(UIScrollView *)scrollView { CGFloat scrollPosition = scrollView.contentOffset.y + scrollView.contentInset.top; if( scrollPosition > 0 || self.isRefreshing ) { return; } CGFloat percentWidth = fabs( scrollPosition ) / self.frame.size.height / 2; CGRect maskFrame = self.maskLayer.frame; maskFrame.size.width = self.imageLayer.frame.size.width * percentWidth; [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; self.maskLayer.frame = maskFrame; [CATransaction commit]; } – (void)containingScrollViewDidEndDragging:(UIScrollView […]