CollectionView缩放水平卡片布局

Posted 西贝了爷

tags:

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

实现效果

技术分享

实现思路

从Demo效果图中,可以看出来,主要是缩放系数的计算。对于不同距离的cell,其缩放系数要变化,以便整体协调显示。

所以,我们必须重写-layoutAttributesForElementsInRect:方法来实现所有当前可见的cell的attributes。

计算比例,通过获取当前偏移rect的最小坐标x,再与atribute的中心x相减,再除以高度,就是高度的缩放倍数scaleForDistance。

 

最后,通过一个公式来计算缩放的Y系数。公式为:

scaleFactor因子可以自由调整,值越大,显示就越大。

核心代码

实现pagingEnabled的样式

这里是以1/3.0为分界,左、右的1/3作为分界线,超过才会切换过去!

感谢

感谢评论的朋友们的一句话,点醒了笔者。对于不分页的情况下,其实只要使用当前的偏移x除(itemSize.width + minimumLineSpacing)就得到一个倍数,然后四舍五入。比如,4.3取整得到4,那么就是没有超过一半,就要往回滚。而4.6取整得到5,表示要滚动到下一个。所以在不分页的情况下,其实也是非常简单的。

 

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

CollectionView垂直缩放卡片布局

CollectionView旋转水平卡片布局

如何在Unity的水平布局中将特定的孩子放在前面

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

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

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