2

UICollectionView画像を表示する があります。私の画像のサイズは 114x133 ですが、何らかの理由で実際の画像はUICollectionVewCellこれよりも大きくなっています (セルの背景を赤に設定しているため、これを見ることができます)。このため、ビューには 2 つの画像しか表示できず、2 つの画像の間には大きなギャップがあります。私は以下を実装しています

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    UIImage* img = [UIImage imageNamed:@"thumbnail_frame.png"];

    return img.size;
}

- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(1, 1, 1, 1);
}

プログラムでセルを作成していcontentviewます(つまり、initimageViewなど)。

ビュー全体をプログラムで作成している別のビューで同じ問題に直面しています。そこで私は:

   UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
    flowLayout.minimumInteritemSpacing=10;
    flowLayout.minimumLineSpacing= 30;
    flowLayout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);

    if(collectionView != nil) {
        [collectionView removeFromSuperview];
    }

    CGRect frm= CGRectMake(45, 80, 250, 230);

    collectionView = [[UICollectionView alloc] initWithFrame:frm collectionViewLayout:flowLayout];//(0, 0, self.view.frame.size.width, self.view.frame.size.height) collectionViewLayout:flowLayout];
    collectionView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
    collectionView.clipsToBounds = YES;
    collectionView.layer.cornerRadius = 10.0;
    collectionView.dataSource = self;
    collectionView.delegate = self;
    [collectionView registerClass:[YourPicCollectionViewCell class] forCellWithReuseIdentifier:@"YourPicCell"];

ここでも、2 つの画像の間に大きなギャップがあるか、幅を小さくすると 3 つの画像がありますが、一番右の画像が半分見えます。

間隔をいじりましたが、うまくいかないようです。何が問題なのですか?

4

1 に答える 1

1

セルのサイズを変更する代わりに、コレクションビューのサイズを変更してみてください。コレクション ビューの幅が、2 つのアイテムを続けて保持するのに十分であることを確認してください。これは、コレクション ビューの幅がセルよりも大きい場合、右端と左端に固定されるためです。短すぎると、中央に 1 つのセルしか表示されません (2 つのセルを連続させようとしていると仮定します)。

セルの 1 つが半分しか見えなかった理由は、コレクション ビューの幅がそのスーパー ビューよりも大きかったためです。

したがって、次のことを行うと、必要なものを取得するのに役立ちます..

  1. そのスーパー ビューよりも小さく、(numberOfCells X 幅) + ((numberOfCells-1) X cellGap) と等しくなるように、コレクション ビューをフレームに収めます。
  2. カスタム コレクション ビュー セルの場合は、画像がセルの端にくっつくように imageView に制約を追加してみてください。
于 2015-03-20T03:18:06.857 に答える