上次简单的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里面判断一下即可.