首先来说下自定义tabbar的常规思路:
写一个UIViewcontroller A继承自UITabbarcontroller删除系统的tabbar(隐藏有时候会出问题),然后在原来的tabbar位置放一个自定义的view,在自定义的view上的按钮点击的时候让A.selectedIndex=btn.tag达到切换childviewcontroller的目的,但是这么写有几个问题:
a.不会响应UIViewcontroller的hiddenWhenPushed,需要自己去写隐藏的方法;
b.在支持右滑返回的时候比较丑;
本篇文章主要目的是解决以上的两种问题;
点开UITabbarViewController,看到内部的tabBar是这样的

看到这个是一个UITabBar,基于尽可能的利用系统的控件的原则,我们写一个继承自UITabBar的子类,类似这样的

随便添加几个btn,这里只是意思一下,然后接收下自己定义的被block

重新写一下布局信息

到这里tabbar算是自完成,然后是调用自定义的tabbar:

到这里就定义完成了,支持了push隐藏,也只支持返回显示



网友评论