【iOS开发-31】UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式
一、对UITabBar背景和icon图标的一些设置
(1)由于直接给UITabBar设置的背景颜色显示的不纯。半透明的感觉,所以,有时候我们能够直接利用纯色的图片作为背景达到想要的效果。
(2)给icon图片改变颜色也是重要的有用方法之中的一个,默认的时蓝色。
在AppDelegate.m文件里:(1个导航控制器和5个视图控制器)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建5个视图控制器和1个导航控制器
ViewController1 *vc1=[[ViewController1 alloc]init];
UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:vc1];
ViewController2 *vc2=[[ViewController2 alloc]init];
ViewController3 *vc3=[[ViewController3 alloc]init];
ViewController4 *vc4=[[ViewController4 alloc]init];
ViewController5 *vc5=[[ViewController5 alloc]init];
ViewController *vc6=[[ViewController alloc]init];
//6个标题
nav1.title=@"界面1";
vc2.title=@"界面2";
vc3.title=@"界面3";
vc4.title=@"界面4";
vc5.title=@"界面5";
vc6.title=@"界面6";
//6个系统icon图标
[nav1.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:1];
[vc2.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemSearch tag:2];
[vc3.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemContacts tag:3];
[vc4.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostViewed tag:4];
[vc5.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:5];
[vc6.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:6];
//创建一个视图控制器数组,并把它赋值给标签栏控制器的viewControllers值
NSArray *arr1=[[NSArray alloc]initWithObjects:nav1,vc2,vc3,vc4,vc5,vc6, nil];
UITabBarController *tbCon1=[[UITabBarController alloc]init];
tbCon1.viewControllers=arr1;
//标签栏控制器有个tabBar属性,这个属性有两个items和selectedItem属性是不能用的。由于这两个属性是归标签栏控制器直接管理,其它人不能对其赋值
//执行下面两行代码,程序会崩溃
//tbCon1.tabBar.items=[[NSArray alloc]initWithObjects:vc1.tabBarItem, nil];
//tbCon1.tabBar.selectedItem=vc1.tabBarItem;
//通过backgroundColor能够设置标签栏颜色,可是是一层淡淡的红色
tbCon1.tabBar.backgroundColor=[UIColor redColor];
//能够通过设置背景图片的方式给标签栏设置背景颜色。比方红色的背景图片。要求图片大小要正好
//用下面方式获得标签栏宽高后,创建一个背景图片,再引入进来
NSLog(@"%i,%i",(int)tbCon1.tabBar.frame.size.height,(int)tbCon1.tabBar.frame.size.width);
tbCon1.tabBar.backgroundImage=[UIImage imageNamed:@"tabBarbg.png"];
//通过tintColor能够给icon图标设置颜色
tbCon1.tabBar.tintColor=[UIColor redColor];
//设置被选中标签的背景图片,宽度是375/5=77
tbCon1.tabBar.selectionIndicatorImage=[UIImage imageNamed:@"selectionDic.png"];
//把这个标签栏控制器当做window的根视图控制器来显示
self.window.rootViewController=tbCon1;
// Override point for customization after application launch.
return YES;
}
二、隐藏UITabBar的第一种方式
这一种方式须要用导航控制器视图来做实验,由于我们须要用hidesBottomBarWhenPushed属性,这个属性的意思是,当这个视图被压到栈中时(导航控制器的栈)。隐藏底部的bar。包含UITabBar。
所以我们以上面的nav1做实验,nav1的根视图控制器是vc1。我们在vc1中添加一个button。一点击就到ViewController7.m中(实例是vc7),并隐藏UITabBar。
在vc1中:
#import "ViewController1.h"
#import "ViewController7.h" @interface ViewController1 () @end @implementation ViewController1 - (void)viewDidLoad {
//
UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
btn1.frame=CGRectMake(38, 80, 300, 30);
btn1.backgroundColor=[UIColor whiteColor];
[btn1 setTitle:@"PUSH" forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(jumpTo) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1]; [super viewDidLoad];
// Do any additional setup after loading the view.
} -(void)jumpTo{
ViewController7 *vc7=[[ViewController7 alloc]init];
[self.navigationController pushViewController:vc7 animated:NO];
} @end
在ViewController7.m中:
#import "ViewController7.h" @interface ViewController7 () @end @implementation ViewController7
//添加一个initWithNibName方法,标配是return self。此外还须要在初始化时就设置它的hidesBottomBarWhenPushed属性为YES才干生效
//即。在视图控制器的实例被载入到栈之前,就须要设置这个属性,否则无效
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self.hidesBottomBarWhenPushed=YES;
return self;
} @end
三、隐藏UITabBar的另外一种方式
就是把UITabBar的位置移动。即调整frame.origin.y的值。消失就是把它移出屏幕,出现就是把它再放回原地。
(但,还原时又卡顿现象,体验非常差,不建议)
所以,在ViewController7.m中:
//添加一个试图即将出现时的方法。并在此设置把tabBar下移。移除整个屏幕,相当于消失了
-(void)viewDidAppear:(BOOL)animated{
NSArray *arr1=self.tabBarController.view.subviews;
UIView *view1=[arr1 objectAtIndex:0];
UITabBar *tabBarView1=[arr1 objectAtIndex:1];
//第一个视图就是全屏。不须要把高度撑满,所以能够不做不论什么设置
//view1.frame=CGRectMake(0, 0, 375, 667);
tabBarView1.frame=CGRectMake(0, 667, 375, 49);
}
在ViewController1.m中:
//添加一个viewDidAppear,把下移的tabBar再上移,相当于还原到原地
-(void)viewDidAppear:(BOOL)animated{
NSArray *arr2=self.tabBarController.view.subviews;
UITabBar *tabBarView2=[arr2 objectAtIndex:1];
tabBarView2.frame=CGRectMake(0, 618, 375, 49);
}
事实上另一种隐藏方式。可是极具杀伤力。一隐全隐了,就是从根源上设置这个标签控制器不显示UITabBar。
就是以下的第二行代码:
UITabBarController *tbCon1=[[UITabBarController alloc]init];
tbCon1.tabBar.hidden=YES;
截个图:

【iOS开发-31】UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式的更多相关文章
- 【iOS开发-56】案例BUG:button的enabled、控件的userInteractionEnabled以及两种提示框UIAlert和UIActionSheet
接上述案例找BUG:[iOS开发-51]案例学习:动画新写法.删除子视图.视图顺序.延迟方法.button多功能使用方法及icon图标和启动页设置 (1)BUG:答案满了就不能再点击optionbut ...
- 怎样在Android开发中FPS游戏实现的两种方式比较
怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...
- jQuery中开发插件的两种方式
jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ...
- jQuery开发插件的两种方式
最近挺多人写jQuery的,都是关于jQuery扩展方面的,使用方面的讲的比较多,但是关于详细的一个基础的过程讲的比较少一点,做web开发的基本上都会用到jQuery,本人就根据jQuery的使用经验 ...
- iOS打包为ipa的两种方式和生成P12证书的方式
iOS项目打包为ipa的两种方式: 准备工作:先行在Xcode里面打开preferences,填写apple id. 通过iTunes+Xcode 在Xcode里,把模拟器调整为iOS Device, ...
- ios 实现跳转到评价界面的两种方式
要想在App内跳转到特定App的详情页或者评论页,首先需要获取到App的id.在 iTunes Connect网站上登陆之后,选择“我的App”,然后点击某个特定的App进入,在App信息的综合信息中 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- iOS 自定义layer的两种方式
在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...
- HTML中设置背景图的两种方式
HTML中设置背景图的两种方式 1.background background:url(images/search.png) no-repeat top; 2.background-image ...
- MyBatis开发Dao层的两种方式(原始Dao层开发)
本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例. Mapper动态代理开发Dao层请阅读我的下一篇博客:MyBatis开发Dao层的两种方式(Mapper动态代理方 ...
随机推荐
- javascript语言精粹:继承
继承提供了2个有用的任务: 1.代码重用 2.引入了一套类型系统的规范,因为程序员无需编写显示类型转换的代码,他们的工作量将大大减轻.这是一件很好的事情,应为类型转换会丧失类型系统在安全上的优势. 在 ...
- 不老的新丁 Python何以让人着迷
Python是一门美丽的语言.它简单易学,跨平台,而且运转良好.达成了许多Java一直求索的技术目标.一言以蔽之就是:其他的语言是与时代同 步,而Python则是未雨绸缪,而且计划得颇为出色.当然,这 ...
- Install TightVNC Server in RHEL/CentOS and Fedora to Access Remote Desktops
Virtual Networking Computing (VNC) is a Kind of remote sharing system that makes it possible to take ...
- 【iOS】用Layer创建一个三维模型以及拖动
关于CALayer的介绍以及基本属性,在这篇博客中有交代:CoreAnimation —— CALayer 这篇博客讲述简单的通过对layer的transform属性的设置一个CATransform3 ...
- HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)
Dolls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- Swift语言Storyboard教程:第一部分
更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新: ...
- 区间dp模型之括号匹配打印路径 poj(1141)
题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...
- Nodejs 项目开发
最近这几个月都在学习nodejs. 国内nodejs的资料相对较少,就我所搜索到的,CSDN目前的代码托管平台有不少从github弄过来的开源镜像,其它的不错的社区有cnodejs,byvoid的个人 ...
- 【剑指offer】树的子结构
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25907685 剑指offer第18题,九度OJ上測试通过! 题目描写叙述: 输入两颗二叉树 ...
- 自己用h5写的转盘。写贴上来吧。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...