2014-09-09 6 views
0

저는 모든 화면 크기의 셀을 가진 컬렉션보기를 가지고 있습니다. 셀 사이에 간격을 추가하려고합니다. 그래서 셀 사이를 스크롤 할 때 전체 화면 이미지 사이를 스크롤 할 때 iOS 사진 갤러리처럼 일부 공간이 생깁니다.셀 사이에 간격이있는 UICollectionView에서 스크롤하는 문제가 발생했습니다.

분명히 페이징을 사용할 수 있습니다. 하지만 셀 사이를 스크롤 할 때 어떤 이유로 화면 사이의 간격이 유지됩니다. 즉 셀 폭이 320이고 다음 셀 사이의 공간이 20 픽셀 인 경우 다음 셀까지 스크롤하면 x = 0에 도달하고 x = 20에서 새 셀이 시작됩니다.

왜 그런가요? iOS 사진 갤러리를 스크롤하여 전체 화면 이미지 효과를 얻으려면 어떻게해야하나요?

+0

하는 관련 게시하시기 바랍니다 코드 (또는 스토리 보드의 스크린 샷/XIB를 사용하는 경우 XIB). –

답변

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]; 
} 
관련 문제