• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

SWIFT 实现瀑布流排版(MASONRY LAYOUT)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

作者:by Vergil

图片类的应用我们常常会看到所谓的“瀑布流排版”,各种不同大小的图片拼接摆放在画面上,而也有人直接称这种排版为Pinterest排版,

可能是因为Pinterest是早期经典的RWD设计网站之一。而正式一点的说法应该是Masonry Layout,Dynamic Grid Layout。

比如这张Pinterest官网的图:

排版的逻辑

  • 第一排橘色的部分,直接从左至右放下图片。

  • 接下来不断的将新的图片,安插在最短的column上,从而实现瀑布流的排版方式,可以参考上面放置图片的数字顺序。

自定Layout

我们打算通过UICollectionViewFlowLayout来实现这个布局,

prepare()是它的入口,在这里可以做一些初始化的设定,比如基本的边界、cell之间的距离等等。

因为demo中是提供了切换布局的功能,而我们希望布局在计算过后不用再重新计算,所以会先判断是否已经算过。

如果没有计算过则执行我们的computeAndStoreAttributesWithItemWidth方法来计算布局信息。

排版的本质是去计算每一个cell在scrollView中的位置。

下面是计算每一个Cell的Attribute方法,其中包含了计算后存起来的动作,计算后将结果存起来。

下面是系统读取attributes的方法,因为layoutAttributes中只有每一个cell的frame资讯,

所以要记得同时修改itemSize,否则因为itemSize的错误而导致UICollectionView的contentSize是错的。

Demo中其他的效果

UICollectionView切换的动画的方法,要记得先执行collectionViewLayout.invalidateLayout,然后再换成新的布局。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift语言简介+快速上手发布时间:2022-07-13
下一篇:
【Swift学习】Swift编程之旅---集合类型之数组(六)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap