往往系统自带的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. Android监听屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事 ...

  2. [ExtJS5学习笔记]第十二节 Extjs5开发遇到的问题列表记录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38975633 本文作者:sushengmiyan ------------------ ...

  3. Uva - 210 - Concurrency Simulator

    自己写个双端队列,或者直接用deque,这个也比较好用 AC代码: #include <iostream> #include <cstdio> #include <cst ...

  4. Cocos2D:塔防游戏制作之旅(十五)

    Yes,貌似添加了好多的代码啊 ;] ,在你添加更多代码时,你可能注意到一些Xcode中的一些警告.首先你先忽略这些警告,我们先添加少量最终缺失的部分,然后再来解释上面代码做了什么! 在Enemy.m ...

  5. Tomcat中定制阀门

    我们说管道机制给我们带来了更好的扩展性,Tomcat中在扩展性方面具体如何体现,这便是本节讨论的内容.从上节了解到基础阀门是必须执行的,假如你需要一个额外的逻辑处理阀门,可以添加一个非基础阀门. 我的 ...

  6. Linux Debugging(五): coredump 分析入门

    作为工作几年的老程序猿,肯定会遇到coredump,log severity设置的比较高,导致可用的log无法分析问题所在. 更悲剧的是,这个问题不好复现!所以现在你手头唯一的线索就是这个程序的尸体: ...

  7. Jquery之Bind方法参数传递与接收的三种方法

     方法一. function GetCode(event) { alert(event.data.foo); } $(document).ready(function() { $("#s ...

  8. Android进阶(十四)Android Adapter详解

    Android Adapter详解 Android是完全遵循MVC模式设计的框架,Activity是Controller,layout是View.因为layout五花八门,很多数据都不能直接绑定上去, ...

  9. XBMC源代码分析 7:视频播放器(dvdplayer)-输入流(以libRTMP为例)

    前文分析了XBMC的基本结构: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分 ...

  10. awk字符串函数及其意义

     awk字符串函数及其意义 awk提供了强大的内置字符串函数,用于实现文本的字符串替换.查找以及分隔等功能. awk字符串函数主要有:gsub.index.length.match.split.sub ...