我使用ALAssetsLibrary
访问系统照片库进行预览和多张选择照片,就像原始系统照片库一样,我可以滚动预览照片。我是通过{{1}实现的}和UICollectionView
。除了一点点问题外,一切顺利。
当我使用iOS系统照片库并滚动预览照片时,两张照片之间有一个 Gap ,如下所示。
在我的应用中,滚动时两张照片之间没有 Gap 。我设置了UICollectionViewFlowLayout
分页和UICollectionView
单元格空间(UICollectionViewFlowLayout
和minimumLineSpacing
)将两者都归零。
如何在两张滚动照片之间使用 Gap 制作我的照片预览系统照片库?我是minimumInteritemSpacing
的新手,我不确定是否缺口由UICollectionView
或其他任何内容实施。
答案 0 :(得分:3)
这可以在
中完成将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;
将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;
}
单元格宽度应大于屏幕宽度,与步骤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;
}
希望这会对你有所帮助。 如果这可以解决您的问题,请做出评论并投票
答案 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;
}
希望它有用