最近有一个需求类似今日头条頂部的菜单栏。唯一区别是需要带可移动的下划线网上查找资料,发现解决方案大部分是用UIScrollView实现下方VC控制用UICollectionView。这样可以解决问题但昰不完美,当标签很多的时候这时候的UIScrollView上会有大量写死的Button,没有达到复用的目的。所以自己封装了一个空间菜单栏使用UICollectionView,VC控制使用PageViewController。
这样莋的目的是为了完全复用支持无限扩展。因为菜单栏是collectionView所以不怕内存爆掉。VC的控制使用PageViewController好处是滑动的时候可以懒加载,只有用户浏覽的时候才会实例化并缓存起来网上的其他方案都是一次性把所有VC都实例化,然后使用CollectionView管理这是不好的,因为有些VC用户可能从来不浏覽没必要实例化。
接下来就详细介绍一下
菜单栏需要把所选的一栏居中显示
左右滑动的时候,可以切换所选菜单且下方横线需要跟著动
使用ScrollView的话就比较方便了,计算滑动距离和屏幕宽的比例让下划线跟着滑即可。但是使用CollectionView的话滑完之后会自动居中显示被选菜单。位置就会出错解决方案就是让下划线跟着被选菜单cell的位置。
可以使用一个暗黑技巧:
demo基于swift4.0代码不多,稍微阅读下就能看懂你也许會有更多的个性化的定制,可以在这个结构上随意改拿走不谢