CollectionView垂直缩放卡片布局

Posted 西贝了爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CollectionView垂直缩放卡片布局相关的知识,希望对你有一定的参考价值。

实现效果

技术分享

实现思路

从效果图可以看到变化是,越是往中间滚动的item显示最大,越显眼。而越是往前面,或者越是后面的,反而显示越小,这样就形成了视觉差。

实现的思路就是通过重写在可见范围内的所有item的方法:

通过这个API可以获取到原始属性,然后利用公式来计算缩放。

难点

如何计算缩放系数。这里实现的效果的公式如下:

其中,widthForScale是最难把握的系数。

如何计算widthForScale呢?方法是利用item的中心y与当前collectionview的contentOffset.y来计算:

其中,offset这么计算出来的:

最大的难点是distance的计算,如何拿捏呢?这需要慢慢分析。

假设有三个item显示,那么第一个item的缩放要比第二个item(主显示的item)要小,然后第二个item的缩放要比第三个要大。

第二个item(主)比第一个多了一个item,而第三个又比第二个多了一个item,所以再减去一个item的宽就可以了。

核心代码

系数0.15自由调整。

 

以上是关于CollectionView垂直缩放卡片布局的主要内容,如果未能解决你的问题,请参考以下文章

CollectionView缩放水平卡片布局

CollectionView旋转水平卡片布局

CollectionView 里面的 CollectionView | CollectionViewCell 自动布局错误

使用自动布局缩放垂直约束

为 collectionView 中的每个其他项目设置特定布局

9-12布局进阶 网格卡片功能实现和布局技巧2