美文网首页
自定义TabbarController的思路

自定义TabbarController的思路

作者: 七简 | 来源:发表于2015-08-01 21:29 被阅读332次

    由于初学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进行通知刷新。

    参考资料:

    1.IOS开发。UITabBarController常用和自定义

    2.自定义tabbarController

    相关文章

      网友评论

          本文标题:自定义TabbarController的思路

          本文链接:https://www.haomeiwen.com/subject/bjcmqttx.html