方法一:(Affairs HD)
将window的rootViewController设置为原始UITabbarController,然后将原始UITabbarController的UITabbar隐藏,在原始UITabbarController上addsubview一个自定义的继承自view的UITabbar,将UITabbar里面的按钮事件委托到AppDelegate中来选择页面替换。最后剩下的就是处理UITabbar内的界面了,而本项目中所做的处理只是在按钮事件中将选择指示图片移动一下位置。
方法二:(HeadLine)
将window的rootViewController设置为自定义TabbarController。在自定义TabbarController上面直接覆盖一个背景图片,和一个选择指示图片。需要做的一个处理是将系统自带的选择指示的图片移除。剩下的就是通过self.selectedIndex来控制自定义指示器的移动位置,这里是通过监听selectedViewController完成的。
方法三:(Wireless)
基本原理和HeadLine差不多。不过这里背景图片上面没有带任何图标,所以这里有一个overRide的setViewControllers方法,通过这个方法来手动设置每个按钮图标(设置按钮图标可以直接在tabBar上面addSubview,也可以依次设置tabBar的UITabBarItem。前者可以通过设置按钮图片的高亮和非高亮两种状态来区分是否选中,而后者可以自己设置非选中和选中两套图片)。
如果需要titles,可以通过setTabBarItemsTitles设置titles。
总结:
其实本来是建议能用原始的尽量用原始的,但是发现原始的会在ios7以上和以下两个系统中产生不同的效果,所以还是用自定义的比较好。