iOS使用UICollectionView完成简单的cover
2016-05-25 本文已影响4771人
998e4a3fbbdc
之前我想用iOS完成安卓的 gallery 效果 我想到了cover flow 效果
最近在找工作比较闲就把这个效果给大家分享下
下面这个效果想必大家都能使用UIColletionView实现
最基本的.gif上面的效果是我之前写的小demo在demo里面的注释中可以看到我的思路
那么问题来了这么让两个cell重叠并且让中间的cell显示在最上面呢?
让cell重叠的方案:
// 在flowlayout类中的这个方法中可以获得attributes 对象
// 在这个方法中, 我们只要根据当前的滚动, 对每个cell, 进行对应的缩放就可以了
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect
// 在获取到cell的attributes对象后对cell的size进行放大
attr.size = CGSizeMake(self.itemSize.width * 1.5, self.itemSize.height * 1.5);
让居中的cell的展现在最前面的解决方案是
在collectionView滚动的时候 移动collectionView的子控件使其位于collection 的center点的cell置顶
注意:一定要转换坐标系不然获取不到中心点的cell
#pragma mark - didScorll
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
// 坐标系转换获得collectionView上面的位于中心的cell
CGPoint pointInView = [self.view convertPoint:self.collectionView.center toView:self.collectionView];
// 获取这一点的indexPath
NSIndexPath *indexPathNow = [self.collectionView indexPathForItemAtPoint:pointInView];
GLCell *cell = (GLCell *)[self.collectionView cellForItemAtIndexPath:indexPathNow];
[self.collectionView bringSubviewToFront:cell];
}
画廊.gif效果图
demo下载地址:https://github.com/daleiLV/iOSCoverFlow
如有什么纰漏大家在评论中指出我会改正