由于初学ios不久,对于自定义和工具类的使用这块一直很薄弱,所以这次尝试自己封装一下tabbarcontroller,借此来锻炼自己。
结构图我们先来看看tabbarcontroller的构造,借用其他网站上的一张图我们可以看到,controller上面是tabbar,继承uiview,如果我们想完全自定义的话,自己先建一个view,但是我们要遵循的原则就是可扩展性要高,比如最简单的,如果下面的tabbar按钮的数量因为需求的原因加了一个,减少了一个,又或者当你日后在写项目的时候,是否能拿来直接用,是否能满足各种各样的需求,这一点你在自定义控件的时候一定要考虑到。
在前期设计时,我们一定要考虑到可扩展性和易用性,比如你这个接口的参数是否能满足现有的需求,另外在日后产品提出更改tabbar上的图像或者增加一个按钮,又或者增加一个功能界面等等。你会如何添加你的代码,而不影响其他的功能,这点可以说是模块化,要是能考虑到这几点,可以说这个自定义控件就是非常成功的了。
UITabbarController的结构
开始
我们先做个tabbarcontroller,这里网上都有相关的教程,如果不知道可以去搜索下。
例如第一步就是自定义一个集成UITabbarController的类,然后添加viewcontroller,这样我们可以看到,第一步我们设置出来的界面如图所示
利用系统的tabbarcontroller这个只是利用系统的tabbarcontroller去设置自己的界面,当然适用范围很小。
好了,做完这个,我们在想,如果想改变它的高度或者说是,加一个自定义按钮呢,实现更高程度的自定义。这个我们就要详情了解下每个的结构,比如tabbarcontroller,我们可以点击去查看他的api,发现他的功能基本针对于添加子controller或者是点击事件,我们在看看tabbarview,这个才是我们真正需要的,也就是说,这个才是显示在tabbar上的view,所以我们需要自定义这个实现触摸事件,改变它的ui或者增加一个加号,实现自己的动画效果等等。这时我们可以这样做。
自定义一个UIView,然后在上面加上自己的按钮,等等,然后使用
添加系统自带的tabbar上将自定义的Tabbar添加为系统TabBar的子视图,这样TabBar的切换自动隐藏/滑动功能就不用自己做了. (hidebottombaronpush)。
注意点
当然我说的很笼统,在自定义的过程中,你考虑的问题肯定比我说的要更多,这都是日积月累的,当你遇到的问题和坑越多,你也就越知道在哪些地方注意什么,所以多去尝试,而不仅仅是看。另外,好的自定义控件也要跟你的项目完美匹配,能满足你的后续的需求,所以当你写控件的时候,如果突然冒出了一个产品经理的想法,觉得这个日后可能会怎么怎么样改变,不要嫌麻烦,立刻动身去给你的自定义控件预留一点空间,长痛不如短痛,这句话你日后将深刻的体会到它的含义。好了,快去尝试实现自己的tabbar吧。
其它
另外在切换的时候我们最好是使用改变window的方式,因为在项目中曾经遇到过,关于重新登陆刷新tabbar数据的需求,而tabbar的缓存方式是只要进入一次就有缓存,所以在前期做基础框架搭建的时候就要有基本的考虑。值得一提的是,这个问题的另一种解决方案我采用的是点击tabbar的selectindex进行通知刷新。
参考资料:
网友评论