6

無限スクロール動作を持つコレクション ビューを実装しようとしています。スクロールは、 のように循環する必要がありUIPickerViewます。AppleでできるUICollectionViewか、水平の PickerView を作成するしかありませんか?

どう思いますか?

4

4 に答える 4

3

WWDC 2011 セッション ビデオ「Advanced ScrollView Techniques」をご覧ください。無限スクロールについて説明していUICollectionViewます。スクロール中に中心に移動し、現在表示されているアイテムの後 (またはスクロール方向によっては前) に新しいアイテムを配置します。

彼らがセッションで言ったように、終わりのあるアプローチを使うべきではありません。セッションで述べたように、人々はある時点で間違いなく優位性を見つけるでしょう。

于 2013-03-22T09:16:04.397 に答える
-1

はい、あなたはこれを行うことができます。collectionView:numberOfItemsInSection:に対して非常に大きな数値を返し、collectionView:cellForItemAtIndexPath:で、mod演算子を使用して、0からデータ配列の最後のインデックスまでのindexPath.Rowの数値を常に返します。したがって、配列に20個のアイテムがある場合、次のようになります。

item.whatever.text = [self.theData objectAtIndex:indexPath.row %20];
于 2013-03-20T17:07:15.927 に答える
-1

双方向の無限スクロールを有効にするには、このメソッドをオーバーライドします。コンテンツが中心から離れすぎて、ユーザーが最後まで到達しない場合は常にコンテンツを中心に配置します。

-(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);
}

}
于 2016-11-03T14:35:25.160 に答える
-1

トリッキーな解決策を提供してくれた 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;

}

// 選択した

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{


NSLog(@"Index path is %d", indexPath.row%self.dataArray.count);

}

これにより、無限スクロール効果が得られます。両側の無限スクロールを有効にするには、ViewWillAppear で ScrolltoIndexpath:(Itemscount の中央) を使用します!! これが、無限スクロール UICollectionView を構築しようとしている人に役立つことを願っています。

于 2013-12-12T05:35:58.343 に答える