往往系统自带的UITabbar 不能满足我们的样式或者颜色设计,所以需要调整UITabbar。
1、自定义UITabbar,也是我学到的第一种方式(简单暴力)。
先记录一下思路:
首先,隐藏系统自带的Tabbar,在init 方法中:self.tabBar.hidden =
YES;
然后自定义一个高度49px的UIView,在UIView上添加多个UIButton,我们通过UIView、UIButton的颜色、样式修改来实现我们要的效果。
记录一段我常用的自定义UITabbbar的代码:
//初始化tabbar
- (void)_initTabbarView
{
_tabbarView = [[UIViewalloc]initWithFrame:CGRectMake(0,ScreenHeight-49,ScreenWidth,49)]; [self.viewaddSubview:_tabbarView];
//给tabbarView添加背景图片
UIImageView *tabbarGroundImage = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"tabbar_background.png"]];
tabbarGroundImage.frame =_tabbarView.bounds;
[_tabbarViewaddSubview:tabbarGroundImage]; NSArray *bgroud =@[@"tabbar_home.png",@"tabbar_message_center.png",@"tabbar_profile.png",@"tabbar_discover.png",@"tabbar_more.png"];
NSArray *heightBground =@[@"tabbar_home_highlighted.png",@"tabbar_message_center_highlighted.png",@"tabbar_profile_highlighted.png",@"tabbar_discover_highlighted.png",@"tabbar_more_highlighted.png"]; for (int i = 0; i < bgroud.count; i++) {
NSString *backImage = bgroud[i];
NSString *heightImage = heightBground[i];
UIButton *button = [[UIButtonalloc]initWithFrame:CGRectMake((64-30)/2+(i*64), (49-30)/2,30,30)];
button.showsTouchWhenHighlighted =YES;
button.tag = i;
[button setImage:[UIImageimageNamed:backImage]forState:UIControlStateNormal];
[button setImage:[UIImageimageNamed:heightImage]forState:UIControlStateHighlighted];
[button addTarget:selfaction:@selector(selectedTab:)forControlEvents:UIControlEventTouchUpInside];
[_tabbarViewaddSubview:button];
}
_sliderView = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"tabbar_slider.png"]];
_sliderView.backgroundColor = [UIColorclearColor];
_sliderView.frame = CGRectMake((64-15)/2,5,15,44);
[_tabbarViewaddSubview:_sliderView];
}

2、直接修改系统自带的UITabbar (适用iOS 5—iOS 7)
修改背景颜色:
//设置tabbar的背景色
UIView *bgView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,320,49)];
bgView.backgroundColor = [UIColororangeColor];
[self.tabBarinsertSubview:bgViewatIndex:1];
self.tabBar.opaque = YES;
然后设置图片
UITabBarItem *item1 = [[UITabBarItemalloc]initWithTitle:@"会话"image:niltag:2];
[item1 setFinishedSelectedImage:[UIImageimageNamed:@"com_icon_hover"]withFinishedUnselectedImage:[UIImageimageNamed:@"com_icon"]];
firstVC.tabBarItem = item1;

3、直接修改系统自带的UITabbar (适用iOS 7以上)
//设置tabbar的背景色
UIView *bgView = [[UIViewalloc]initWithFrame:CGRectMake(0,0,320,49)];
bgView.backgroundColor = [UIColororangeColor];
[self.tabBarinsertSubview:bgViewatIndex:1];
self.tabBar.opaque = YES; UIImage *image1 = [[UIImageimageNamed:@"com_icon"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *image1Selected = [[UIImageimageNamed:@"com_icon_hover"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *item1 = [[UITabBarItemalloc]initWithTitle:nilimage:image1selectedImage:image1Selected];
firstVC.tabBarItem = item1;

这里关键是要设置图片的 RenderingMode.

UITabbar的一些常规用法(总结)的更多相关文章

  1. GridView的常规用法

    GridView控件在Asp.net中相当常用,以下是控件的解释,有些是常用的,有些是偶尔用到的,查找.使用.记录,仅此而已.(最后附带DropDownList控件) ASP.NET中GridView ...

  2. mapreduce的cleanUp和setUp的特殊用法(TopN问题)和常规用法

    一:特殊用法 我们上来不讲普通用法,普通用法放到最后.我们来谈一谈特殊用法,了解这一用法,让你的mapreduce编程能力提高一个档次,毫不夸张!!!扯淡了,让我们进入正题: 我们知道reduce和m ...

  3. 【python】-matplotlib.pylab常规用法

    目的: 了解matplotlib.pylab常规用法 示例 import matplotlib.pylab as pl x = range(10) y = [i * i for i in x] pl. ...

  4. MarkDown的常规用法

    MarkDown的常规用法 标题 # 一级标题 ## 二级标题 ... ###### 六级标题 列表 第二级 - 和 空格 + 和 空额 * 和 空格 第三级 代码块 多行代码块 3个` 回车 单行代 ...

  5. C# 当中 LINQ 的常规用法(Lambda 方式)

    仅以本篇博文记录 LINQ 相关操作的基本知识,原型参考自 MSDN 相关知识,中间加以自己的理解与 DEMO. 1. IEnuemrable<T>.Select() Select 方法比 ...

  6. Vuex 常规用法

    背景 很多时候我们已经熟悉了框架的运用,但是有时候就是忘了怎么用 所以这里想记下大部分的框架使用方法,方便使用的时候拷贝 一.安装 npm 方式 npm install vuex --save yar ...

  7. iOS -Swift 3.0 -String(字符串常规用法)

    // // ViewController.swift // Swift-String // // Created by luorende on 16/9/10. // Copyright © 2016 ...

  8. 关于strong、copy、weak、assign的常规用法

    strong   对于普通的OC对象都是使用strong copy     对于 NSString,Block weak    用于OC对象,1.当出现循环强引用的时候,必须要保证一端是weak, 2 ...

  9. SimpleDateFormat 常规用法

    public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (d ...

随机推荐

  1. Compass 更智能的搜索引擎(2)--进阶

    经过了Compass 更智能的搜索引擎(1)–入门的学习,想必对于Compass的使用有了更深的认识了吧.下面谈点更加切合实际开发的东西.那就是CRUD. 面向对象的分页 dao层实现 代码释义 优点 ...

  2. Linux jar包 后台运行

    Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...

  3. leetcode 3 Longest Substring Without Repeating Characters最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  4. H3C数据中心虚拟化解决方案技术白皮书

    缩略语清单: 缩略语 英文全名 中文解释 IDC Internet Data Center 互联网数据中心 VRF Virtual Router Forwarding 虚拟路由器转发 SMP Symm ...

  5. 最简单的基于libVLC的例子:最简单的基于libVLC的推流器

    ===================================================== 最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于lib ...

  6. Android:ADB server didn't ACK或者adb server is out of date. killing解决办法

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 出现这个原因我个人感觉有两个.一.5037端口被别的程序或者进程占用:二.adb占用的不是5037端口.很多人仅仅知道第一种二忽 ...

  7. Linux的sort命令

     Linux的sort命令 Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常使用的文件排序工具. sort命令将输入文件看做由多条记录组成的数据流 ...

  8. Cocos2D:塔防游戏制作之旅(十二)

    以上代码块相当直观 - 但是它分解的有些细致了. 首先,敌人通过传递HelloWorldLayer对象的引用而初始化.在init方法里,少数重要的变量被设置: maxHP:定义敌人有多经打(Tough ...

  9. Android进阶(九)APP编程感想

    从初识Android到现在,在不断做APP(二维码.条形码扫描,彩票购买,火车票余票查询)的过程中,自己学会了很多东西.找时间整理了一下,总结如下: 其中,对于前两个APP,自己都是在他人已完成的基础 ...

  10. Mybatis接口编程原理分析(二)

    在上一篇博客中 Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和MapperProxy,接下来我们要介绍的是MapperMethod MapperMethod:它 ...