我试图实现与无限滚动行为的集合视图。 滚动应该是圆形的-就像在一个UIPickerView
。 可以将它与苹果进行UICollectionView
或者没有选择,只能创建水平PickerView?
你怎么看?
我试图实现与无限滚动行为的集合视图。 滚动应该是圆形的-就像在一个UIPickerView
。 可以将它与苹果进行UICollectionView
或者没有选择,只能创建水平PickerView?
你怎么看?
你应该看WWDC 2011会话视频“高级滚动型技术”,他们谈论无限滚动,而且我敢肯定它可能使用与UICollectionView
秒。 它(取决于滚动方向之前,或)recenters在滚动,并把当前可见的项目后的新项目。
就像他们在会议上说,你不应该使用有一个结局的方法。 就像在会议上说:人们会在一个点上绝对找不到的边缘。
重写此方法,使无限滚动两种方式。 据中心的内容时,它距离市中心太远,用户永远不会打到底。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint currentOffset = self.collectionView.contentOffset;
CGFloat contentWidth = self.collectionView.contentSize.width;
CGFloat centerOffsetX = (contentWidth - self.collectionView.bounds.size.width) / 2.0;
CGFloat distanceFromCenter = fabs(currentOffset.x - centerOffsetX);
if (distanceFromCenter > (contentWidth / 4.0)) {
self.collectionView.contentOffset = CGPointMake(centerOffsetX, currentOffset.y);
}
}
由于rdelmar一个棘手的解决方案。 “为的CollectionView大量:numberOfItemsInSection”这个想法的工作就像一个魅力。 我试图实现与UIScrollView的委托方法相同。 但产量生涩。
下面是我的一些代码的一部分。
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 100;}
// CellforRow
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell identifier
static NSString *cellIdentifier = @"cvCell";
CVCell *cell;
cell = (CVCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
[cell.titleLabel setText:[self.dataArray objectAtIndex:(indexPath.row)%self.dataArray.count]];
return cell;
}
// DidSelect
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"Index path is %d", indexPath.row%self.dataArray.count);
}
这将给无限滚动效果。 要启用无限滚动两侧,使用ScrolltoIndexpath:在viewWillAppear中(Itemscount中间)! 希望这会帮助别人谁是即将建成的无限滚动UICollectionView。
是的,你可以做到这一点。 返回一个非常大的数量的CollectionView:numberOfItemsInSection :,和的CollectionView:cellForItemAtIndexPath :,你使用Mod运算符总是返回indexPath.Row一个数字,0和数据数组中的最后一个索引之间的。 所以,如果您在数组中有20个项目,你会做这样的事情:
item.whatever.text = [self.theData objectAtIndex:indexPath.row %20];