常用类tabBarController的实现(今日头条架构)

上次简单的tabBarConroller底层原理实现是比较简单的,然后常用类似tabBarController的是今日头条那种的自定义控制器.

其实那种视图在熟悉tabBarController的底层实现后,进行扩展还是很简单的;

一:首先将上一篇的containView换成collectionView

注意设置collectionView的一些布局属性

二:设置数据源方法


这就可以利用collectionView的属性,完成多个view展示的离屏渲染问题,而且不用自己去添加全屏滑动切换的功能,一举两得,最终实现效果如下图.

在图下面,我会把按钮下划线的代码和动画还有,这种效果控制器的一些注意点

三:按钮下划线(按需求)和一些细节`注意点

对于前缀忽略,我的母校前面缩写,以后改为自己名字

前半段和上一篇一样


下划线效果

关于动画效果就是最简单的UIView动画,就不贴了,上传图片太容易失败了,还有就是按钮点击的方法需要添加代码:(下次去了解贴代码块再写文章,方便彼此)

// 2.滚动到对应位置

CGFloatoffsetX = i *HHScreenW;

self.bottomContainerView.contentOffset=CGPointMake(offsetX,0);

上面代码是点击按钮标题的时候,切换控制器的逻辑,很简单吧..(全部,视频等是我这次改掉子控制器title的)

细节优化:

添加按钮(子控制器标题)的方法,放在控制器的viewWillAppear里面调用

解释:如果你只写一次无所谓放在哪,只需要放在添加子控制器后面即可;

但是如果你想封装一下,留给以后相似结构的控制器继承要注意写在viewWillAppera里面,其实UITabBarController也是将tabbaritem写在这个方法里面的.

如果封装的话:

添加按钮(子控制器标题)的方法,放在控制器的viewWillAppear里面要保证制调用一次,不然会重复添加

解决方案:我建议在控制器写一个BOOL的属性记录一下即可,在viewWillAppear里面判断一下即可.

推荐阅读更多精彩内容