tabbar是放在APP底部的控件。常见的APP都使用tabbar来进行功能分类的管理,比如微信、QQ等等。

小程需要一个特殊一点的tabbar,要求突显中间的那个按钮,让中间按钮特别显眼,从而引导用户去点击。

所以,让中间按钮大于两边的按钮,是一个基本的要求。

使用常规的UITabBar跟UITabBarController不能满足这个需求,于是,扩展它,自定一下,是一个办法。

需要自定义uitabbar跟uitabbarcontroller。uitabbar是一个uiview,最终由uitabbarcontroller来管理,而uitabbarcontroller是一个uiviewcontroller。

(1)uitabbar

这是一个uiview,上面放一个按钮,这个按钮最终作为tabbar的中间按钮。

实现代码是这样的:

(2)uitabbarcontroller

这是一个uiviewcontroller,用来管理tabbar上的所有tab的viewcontroller,以及中间按钮。

实例的代码是这样的:


(3)使用自定义的uitabbarcontroller

使用的代码如下:

只需要在APP的didFinishLaunchingWithOptions中,设置self.window.rootViewController为tabbarcontroller即可。

这里对按钮加了点击跟长按事件。

最终执行的界面效果是这样的:

感谢各位的关注,后面我会把IOS客户端源码、API源码呈献给大家,完整的示例大家可以暂时到AppStore下载安装“知音”。

iOS开发简记(2):自定义tabbar的更多相关文章

  1. iOS开发笔记_4自定义TabBar

    新博客:http://www.liuchendi.com 好多APP都使用的是自定义的TabBar,那这个功能应该如何实现呢?首先应该解决的问题就是,加载NavigationController的时候 ...

  2. iOS开发多线程篇—自定义NSOperation

    iOS开发多线程篇—自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UI ...

  3. iOS开发简记(5):设备唯一标识与全局变量

    这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量. (1)唯一标识 唯一标识一台设备(比如iPhone.iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都 ...

  4. iOS开发备忘录:自定义UINavigationBar背景图片和Back按钮

    iOS项目,根据设计图,有时需要自定义UIView的UINavigationBar的背景.可以切出来一张1像素左右的背景图片,来充当UINavigationBar的背景. 可以利用Navigation ...

  5. iOS开发简记(9):APPStore审核

    "觅知音"这个APP的第一个版本从提交审核到上架,历时三个星期,其中遇到一些审核上的问题,它的处理或许能帮助到遇到同样问题的小伙伴们,所以这里列举出来,这三个星期如何跟苹果的审核团 ...

  6. iOS开发简记(8):数据持久化

    数据持久化,也就是把数据保存到磁盘,以后可以再读取出来使用(也可以再次更改或删除).很多场景需要数据持久化,比如为了减轻服务器的访问与存储压力,客户端需要在本地做一些数据持久化的工作. iOS的数据持 ...

  7. iOS开发简记(6):storyboard的使用

    从xib到storyboard,iOS界面开发的方式在变化. 这里记录怎么使用storyboard来完成简单的界面开发,比如实现一个“我”的简单界面. (1)新建storyboard 在新建文件向导中 ...

  8. iOS开发简记(1):指定APP的图标与启动图

    各位兄弟姐妹们,早上好,本人花了将近一个月的时间打造了一个完整的IOS版的App, 期间包括开发,测试,上线审核,现在花点时间把实现的过程分享给大家,“知音”app功能简单,适合对象为初学者,后面我会 ...

  9. 【ios开发】使用自定义的TableViewCell

    当系统自带的cell无法满足我们的要求的时候,我们就可以自定义自己的cell. 先看看效果,这个效果有点重复造轮子的感觉,因为UITableView已经实现了这种布局. 打造自己的cell只需简单的3 ...

随机推荐

  1. (后端)出现org.hibernate.NonUniqueResultException的原因即解决办法

    百度出来的资料解决问题: 一个问题,事务处理完毕以后页面没有刷新.刚开始以为是前台js的问题,后来检查js没有任何问题,跟踪到后台发现后台报错了,错误信息如下:org.hibernate.NonUni ...

  2. [20180124]奇怪的SQL*Net message from dblink.txt

    [20180124]奇怪的SQL*Net message from dblink.txt --//生产系统出现大量的SQL*Net message from dblink事件,自己分析看看. 1.环境 ...

  3. [20171124]bbed的使用问题2.txt

    [20171124]bbed的使用问题2.txt --//bbed 是探究oracle数据块的好工具,有时候不用转储,直接可以它看oracle内部块的内部结构.--//在使用中要注意一些问题,昨天又犯 ...

  4. 洗礼灵魂,修炼python(55)--爬虫篇—知识补充—RFC 2616 http状态码

    不多说直接上状态码表: 状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽 ...

  5. MHA官方文档翻译

    英文官方文档 http://code.google.com/p/mysql-master-ha/wiki/TableOfContents?tm=6 转载请注明出处 Overview MHA能够在较短的 ...

  6. Maven 变量及常见插件配置详解

    Maven 的 pom.xml 常用 变量 插件 配置 详解 一.变量 - 自定义变量及内置变量 1. 自定义变量 <properties> <project.build.name& ...

  7. Git永久删除文件和历史记录

    目录 Git永久删除文件和历史记录 使用filter-branch 添加到.gitignore文件里并push修改后的repo 清理和回收空间 Git永久删除文件和历史记录 造成你想从git存储库中永 ...

  8. kafka集群管理工具kafka-manager部署安装

    一.kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很 ...

  9. 使用CefSharp的一些需要注意的点

    程序关闭的时候一定要加上: CefSharp.Cef.Shutdown(); 因为关闭的时候,不将浏览器关闭的话,会阻塞主线程导致报错. 修复CefSharp浏览器组件中文输入的bug // brow ...

  10. indexOf() 使用方法(数组去重)

    对于indexOf()的用法一直停留在查找第几个字符串,却不知道它能用到数组去重中,首先还是温顾下indexOf()的语法: <!DOCTYPE html> <html lang=& ...