UICollectionView在单元格之间添加间隙

时间:2016-05-19 09:32:01

标签: ios objective-c iphone swift uicollectionview

我使用ALAssetsLibrary访问系统照片库进行预览和多张选择照片,就像原始系统照片库一样,我可以滚动预览照片。我是通过{{1}实现的}和UICollectionView。除了一点点问题外,一切顺利。

当我使用iOS系统照片库并滚动预览照片时,两张照片之间有一个 Gap ,如下所示。 enter image description here

在我的应用中,滚动时两张照片之间没有 Gap 。我设置了UICollectionViewFlowLayout分页和UICollectionView单元格空间(UICollectionViewFlowLayoutminimumLineSpacing)将两者都归零。 enter image description here

如何在两张滚动照片之间使用 Gap 制作我的照片预览系统照片库?我是minimumInteritemSpacing的新手,我不确定是否缺口UICollectionView或其他任何内容实施。

5 个答案:

答案 0 :(得分:3)

这可以在

中完成
  1. 将UICollectionView框架宽度设置为大于屏幕宽度。

    layout = [[UICollectionViewFlowLayout alloc]init];
    CGRect cSize = self.view.bounds;
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
    // 1. UICollectionView frame width lager than screen with => Screen width + 2*(required Space)
    cSize.size.width += 20; 
    self.collectionGallery = [[UICollectionView alloc]initWithFrame:cSize collectionViewLayout:layout];
    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    layout.minimumInteritemSpacing = 0;
    layout.minimumLineSpacing = 0;
    
  2. 将UIImageView框架宽度设置为等于屏幕宽度。

    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    
    GalleryCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    
    cell.imageGallery.contentMode = UIViewContentModeScaleAspectFit;
    // 2
    cell.imageGallery.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    
    return cell;
    }
    
  3. 单元格宽度应大于屏幕宽度,与步骤1相同。

    -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    CGSize size = CGSizeMake(self.view.frame.size.width + 20, self.view.frame.size.height); // cell size should be same as collectionview width
    return size;
    }
    
  4. 希望这会对你有所帮助。 如果这可以解决您的问题,请做出评论并投票

答案 1 :(得分:1)

您可以将流程布局的属性.itemSize = CGSizeMake(desiredWidth, desiredHeight);设置为图像页面所需的大小。

在此之后,.minimumInteritemSpacing将正常工作。

要在预览和收集之间进行更改,请使用两个FlowLayout,一个有间隙,一个没有间隙。

答案 2 :(得分:1)

最小间距和截面插入将为您完成工作。

不要这样做 - >单元格空间(minimumLineSpacing和minimumInteritemSpacing)为零。

答案 3 :(得分:1)

这个UICollectionViewFlowLayoutDelegate方法可以帮助你..

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section  
  {
    return 10; // This is the minimum inter item spacing, can be more
  }

如果你需要更多空间来安排你的单元格,还可以调整edgeInsets

答案 4 :(得分:1)

使用以下代码,如果使用miniumInteritemSpacingForSectionAtIndex:,每个项目中5px之间的间距而您需要边距,请在insetForSectionAtIndex:中将此方法的值设置为top,left,bottom,right,

- (UIEdgeInsets)collectionView:(UICollectionView *) collectionView 
                        layout:(UICollectionViewLayout *) collectionViewLayout 
        insetForSectionAtIndex:(NSInteger) section {

    return UIEdgeInsetsMake(0, 0, 0, 0); // top, left, bottom, right
}

- (CGFloat)collectionView:(UICollectionView *) collectionView
                   layout:(UICollectionViewLayout *) collectionViewLayout
  minimumInteritemSpacingForSectionAtIndex:(NSInteger) section {    
    return 5.0;
}

希望它有用