单元格之间具有间距的UICollectionView具有滚动问题

时间:2014-09-09 11:49:27

标签: ios uicollectionview

我有一个集合视图,单元格大小为全屏。 我试图在单元格之间添加间距,所以当我在单元格之间滚动时,它们之间会有一些空间 - 如在iOS照片库中,当您在全屏图像之间滚动时。

显然我启用了分页功能。 但由于某些原因,当我在单元格之间滚动时,间距停留在屏幕上。 即,如果单元格宽度为320,并且下一个单元格之间的间距为20px,那么当我滚动到下一个单元格时,空间将达到x = 0,新单元格将从x = 20开始。

为什么? 如何获得确切的iOS照片库滚动全屏图像效果?

1 个答案:

答案 0 :(得分:0)

将集合的宽度增加到空间值,并将集合左移到半空间值。然后将右侧和左侧部分插入更改为半空间值

enter image description here

或者即使单元格大小小于集合视图,您也可以创建自己的分页:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    CGPoint contentOffset = scrollView.contentOffset;
    CGSize size = scrollView.frame.size;
    CGPoint locationInView = CGPointMake(contentOffset.x + size.width/2, contentOffset.y + size.height/2);
    if (scrollView == _collectionView) {
        NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:locationInView];
        [_collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionCenteredHorizontally];
        [self collectionView:_collectionView didSelectItemAtIndexPath:indexPath];
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        [self scrollViewDidEndDecelerating:scrollView];
    }
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    [collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}