繁体   English   中英

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

[英]UICollectionView with spacing between cells has scrolling issues

我有一个集合视图,所有屏幕的大小都与单元格相同。 我正在尝试在单元格之间增加间距,因此,每当在单元格之间滚动时,之间就会有一些间隔-如在iOS图片库中,当您在全屏图像之间滚动时。

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

这是为什么? 我如何获得确切的iOS照片画廊滚动全屏图像效果?

将集合的宽度增加到空格值,并将集合左移到一半空格值。 然后将左右部分的插图更改为半个空格值

在此处输入图片说明

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

- (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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM