自定义TabbarController的思路

由于初学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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,972评论 25 709
  • 昨天带胖胖和嘉琪丹丹去城西银泰去滑冰。中饭以点心代替。买了“九月生活”的榨菜肉烧饼。特别好吃,皮非常酥、松。肉馅感...
    471503Liwufeng阅读 250评论 0 0
  • 由于只是一些简单实用的东西,学学还是挺不错的。其实单元测试用的好,开发起来也会快很多。单元测试对于我目前来说,就是...
    闲云清烟阅读 175评论 0 0
  • 最近看了一个电影叫once,中文名字叫做曾经(可能会有不一样的翻译)。 我是本着小清新的心态去看这部电影,没想到最...
    慕宁1999阅读 1,044评论 0 0