0

サムネイルを表示するために使用しているコレクションビューがあります。写真アプリと同じように、4列にしたいです。

私はいくつかのサンプルコードを手に入れました(まだそれほど多くはありません)、そしてそれはそれがしている数学と私を混乱させています。

Webサービスから戻ってきたXMLからNSXMLParserを介して構築した配列(サム)をデータソースとして使用しています。

ただし、配列には「numberOfSections」も「numberOfItemsInSection」も含まれていないため(写真の名前と場所を含む単純な2D配列です)、4を処理するように調整するために必要な計算を決定するのに問題があります。

例:3行目/ 2列目である場合、そのインデックスは配列の9(ゼロベース)ですか?(2つの完全な行*1行あたり4+ 2(2番目の列)= 10)?..混乱しているため

また、現在のコードでは偶数枚の写真しか表示されないことに注意してください。したがって、特定のアルバムに3枚の写真がある場合、2枚だけが表示されます。

現在のコード:

`#pragma mark - UICollectionViewDataSource

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    // Return the number of sections.
    return [thumbs count] / 2;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 2;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"PhotoCollCell" forIndexPath:indexPath];
    //get current photo from collection
    PhotoCollection *currentPhoto = [thumbs objectAtIndex:(indexPath.section*2 + indexPath.row)];

    //Show in PhotoName Cell
    cell.photoName.text = currentPhoto.PhotoName;

    //show thumb via:SDWebImage
    [cell.photoView setImageWithURL:[NSURL URLWithString:currentPhoto.PhotoThumbnailAbsoluteLocation] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    //regular (wasn't working by default)
    //cell.photoView.image = [UIImage imageNamed:currentPhoto.PhotoThumbnailAbsoluteLocation];

    return cell;

}`
4

1 に答える 1

1

コレクションビューのポイントは、これらの計算を行う必要がないということです。レイアウトクラスとして使用UICollectionViewFlowLayoutし、セルを適切なサイズにして(1行に4つだけが収まるように)、すべてのサムネイルを含む1つのセクションを作成します。フローレイアウトは、セルの位置を自動的に調整して行を埋めることにより、グリッドを提供します。

于 2012-10-14T08:32:48.710 に答える