2

我有一个UICollectionView显示图像的。我的图像尺寸为 114x133,但由于某种原因实际尺寸大于此尺寸UICollectionVewCell(我可以看到这是因为我将单元格背景设置为红色)。因此,视图只能显示 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编程方式创建单元格(即初始化imageView等)。

我在以编程方式创建整个视图的不同视图中面临同样的问题。我在那里:

   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"];

同样,两个图像之间的差距很大,或者如果我缩小宽度,则有 3 个图像,但最右边的一个是半可见的。

我修改了间距,但它似乎不起作用。可能是什么问题呢?

4

1 回答 1

1

我认为不要调整单元格的大小..您应该尝试调整集合视图的大小。确保集合视图的宽度刚好可以连续容纳 2 个项目。这是因为如果集合视图的宽度大于单元格的宽度,那么它将粘在最右边和最左边。如果它太短,那么只有一个单元格将显示在中心(假设您试图保持 2 个单元格连续)。

您的一个单元格半可见的原因是集合视图的宽度大于其超级视图。

因此,执行以下操作将帮助您获得想要的东西..

  1. 框住您的集合视图,使其小于其超级视图并且应等于 (numberOfCells X width) + ((numberOfCells-1) X cellGap)。
  2. 如果它是自定义集合视图单元格,请尝试向 imageView 添加约束,以使图像贴在单元格边缘。
于 2015-03-20T03:18:06.857 回答