最近在研究一些iOS中的基本问题,发现网上的答案很多,但是讲的都不够清晰,自己结合使用的实际情况总结下。

很多时候我们需要自定义UITabBarController或者UITabBar,但是往往用起来有些地方让人困惑。

1、先说下网络上常见的方式:隐藏原有的TabBar,使用UIView完全重新定义TabBar,这样的好处就是,定制化的程度很高

而且很多东西可以完全推倒重来,但是有一个很严重的问题,当使用

viewController.hidesBottomBarWhenPushed = YES的时候,还是无法隐藏UITabBar,这个始终无法隐藏,除非采用自定制的动画移开这个UIView或者设置

这个为Hidden, 最重要的问题也在这里, 所以采用隐藏原有的TabBar的方式之后很多人抱怨无法通过viewController.hidesBottomBarWhenPushed = YES

来隐藏TabBar,网上有很多类似的代码,我这里就不贴源代码了,问题已经分析出来了。

网易新闻的iOS客户端就是这样的方式实现的,有一点点小的瑕疵

还有一种类型的TabBar可以使用这样的方式来实现,上截图

这个就完全是重写了TabBar,而且和以前的系统原生的没有任何关系了,但是用的不多。

2、使用自定义UITabBarController, 继承UITabBarController,采用两种方式(为了适应iOS4 和 iOS5)

主要代码如下

//方法一

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tabbar_background"]];

imageView.frame = CGRectMake(0, 0, self.tabBar.frame.size.width, self.tabBar.frame.size.height);

NSLog(@"the frame is %f---%f", self.tabBar.frame.size.width, self.tabBar.frame.size.height);

imageView.contentMode = UIViewContentModeScaleToFill;

[[self tabBar] insertSubview:imageView atIndex:0];

[imageView release];

//方法二  适用于iOS5+

//        [self.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_background"]];

方法一只能适用于iOS5以下的系统,在iOS5+上面无法使用,所以必须把这两种方法结合起来

当使用viewController.hidesBottomBarWhenPushed = YES

然后再加上

[self.navigationControllerpushViewController:ucenter animated:YES];

就可以实现UITabBar的隐藏,同时也实现了自定义的UITabBarController

截图如下,新浪微博的客户端就是采用这样的方式实现的。

push之后的图片

自定义UITabBarController以及UITabBar的分析相关推荐

  1. R语言自定义变成进行决策曲线分析DCA曲线绘制(Decision Curve Analysis)

    R语言自定义变成进行决策曲线分析DCA曲线绘制(Decision Curve Analysis) 我们可能使用别的语言获得了机器学习模型以及对应的预测概率和标签,我们想直接使用这些信息进行DCA曲线的 ...

  2. ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️

    ❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...

  3. php nl2p,PHP函数nl2br()与自定义函数nl2p()换行用法分析,nl2brnl2p_PHP教程

    PHP函数nl2br()与自定义函数nl2p()换行用法分析,nl2brnl2p 本文实例讲述了PHP函数nl2br()与自定义函数nl2p()换行用法.分享给大家供大家参考,具体如下: 使用情景 很 ...

  4. 小虎电商浏览器:卖家精灵应该如何自定义品类并对市场进行分析

    卖家精灵推出了自定义品类的功能,当前基于类目的Top100做市场分析,用户通过列表可以找到商品,但产品本身的底层类目,有时候需要自己定义.那么卖家精灵怎么自定义品类分析市场呢?一起来看看吧. 卖家精灵 ...

  5. php serializable,PHP自定义序列化接口Serializable用法分析讲解

    这篇文章主要介绍了PHP自定义序列化接口Serializable用法,结合实例形式分析了Serializable自定义序列化接口的概念.功能.定义及使用方法,需要的朋友可以参考下 本文实例讲述了PHP ...

  6. 自定义函数 | R语言偏相关分析及绘图

    R语言的偏相关分析过程 偏相关分析介绍 阶偏相关分析: 偏相关系数: Pearson相关系数 Spearman相关系数 Kendall等级相关系数 R语言实现偏相关分析 pcor() pcor.tes ...

  7. 四种常用线程池及自定义线程池参数详细分析

    文章目录 一.什么是线程池 二.常用的更方便的Executors工厂方法 三.自定义线程池 四.缓冲队列BlockingQueue 五. 排队的三种一般策略 六.拒绝策略 一.什么是线程池 线程池(英 ...

  8. 自定义starter的常规组成分析

    springBoot框架通过简化配置的方式实现spring应用的快速搭建:同时可以一定程度上解决包依赖冲突:提升开发效率的同时也减少系统搭建难度. 为了方便理解和自己编写一些starter,就需要熟悉 ...

  9. iPhone X UITabBarController UITabBar 适配解读

    iPhone X 简直就是神一般的存在 iPhone X的分辨率是:1125 X 2436 但是iPhone X的 UIScreen bounds 却是:CGRectMake(0, 0, 375, 8 ...

  10. android编程绘制扇形,分析实现Android自定义View之扇形图

    继承View基类,画了这样的扇形图 粗糙的样子^_^ 直接来步骤吧 1.分析 自定义View需要认真的分析下,里面还是会用到一些数学知识 首先是扇形该怎么表现 1. 扇形的外观是个圆弧,而且是围绕一个 ...

最新文章

  1. Matlab:成功解决Undefined function or variable B
  2. struts2的action之间和action向jsp的参数传递
  3. 整形数组按照频率排序
  4. Python爬虫的起点
  5. java app log4j 配置_Java-未加载log4j2配置
  6. 实现机器学习的循序渐进指南XII——Apriori
  7. 浅谈三角带的使用及其分类
  8. 安装mysql ubantu_安装mysql到ubuntu
  9. Entity Resolution(实体解析)
  10. 拓端tecdat|R语言极值理论EVT:基于GPD模型的火灾损失分布分析
  11. java 驼峰自动映射_总结springboot开启mybatis驼峰命名自动映射的三种方式
  12. keli不支持中文,显示中文乱码
  13. 西门子S7-1200PLC脉冲控制伺服程序案例 此程序是关于西门子1200PLC以PTO脉冲方式控制伺服电机
  14. win10卸载ie11后安装不上
  15. 微云同步盘 linux,微云同步盘和微云有什么区别?
  16. 保护眼睛android版本,夜间护眼软件下载-夜间护眼 安卓版v4.9.1-PC6安卓网
  17. 计算机主机风扇安装方法,机箱风扇怎么装,详细教您电脑机箱风扇怎么装
  18. 老罗的Android系统分析(三横三纵)
  19. 让数字预失真的故障排除和微调不再难 必备攻略请查收
  20. 美术鉴赏课的体会和深入理解计算机系统,中外美术鉴赏学习心得体会(选修课)-20210612092854.pdf-原创力文档...

热门文章

  1. paip.提升用户体验-----用户注册设计
  2. Rust : future库
  3. 专访黑石集团CEO苏世民:“我们能见他人所不能见”/巴伦独家
  4. 精细运营,这只“蚂蚁”开辟了一条全新的财富之路
  5. (转)神秘的比特币地址详解
  6. Kafka从上手到实践 - 初步认知:MQ系统 | 凌云时刻
  7. QEMU,KVM及QEMU-KVM介绍
  8. 【图像去噪】基于matlab GUI HSI彩色图像去噪【含Matlab源码 1786期】
  9. 2021全国研究生数学建模竞赛A题思路
  10. 【电力负荷预测】基于matlab GUI粒子群优化支持向量机短期电力负荷预测【含Matlab源码 751期】