一、对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中增加一个按钮,一点击就到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背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式的更多相关文章

  1. HTML中设置背景图的两种方式

    HTML中设置背景图的两种方式 1.background    background:url(images/search.png) no-repeat top; 2.background-image ...

  2. 【iOS开发-31】UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式

    一.对UITabBar背景和icon图标的一些设置 (1)由于直接给UITabBar设置的背景颜色显示的不纯.半透明的感觉,所以,有时候我们能够直接利用纯色的图片作为背景达到想要的效果. (2)给ic ...

  3. Jquery EasyUI修改行背景的两种方式

    1.数据加载完成不请求后台的做法 方式一: //更改表格行背景 function changeLineStyle(index){ var rows=$("#alertGird"). ...

  4. 自定义UITabBar的两种方式

    开发中,经常会遇到各种各样的奇葩设计要求,因为apple提供的UITabBar样式单一,只是简单的"图片+文字"样式,高度49又不可以改变.自定义UITabBar成为了唯一的出路. ...

  5. iOS实现渐变色背景(两种方式实现)

    之前做过类似的功能,现在记录一下,来来来... 效果图: 说明=========================== 方法1: 说明:无返回值 用法:直接调用方法.原理是在view的layer层添加. ...

  6. Web内容禁止选中的两种方式

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5761818. ...

  7. [Asp.net]DropDownList改变默认选中项的两种方式

    引言 其实是不想总结这方面的内容,发现太简单了,可是在这上面也栽了跟头.所以还是记录一下吧,算是提醒自己,不要太看不起太基础的东西,有这种心理,是会载大跟头的. 一个例子 这里模拟一下最常用的一个例子 ...

  8. JS组件系列——不容错过的两款Bootstrap Icon图标选择组件

    前言:最近好多朋友在群里面聊到bootstrap icon图标的问题,比如最常见的菜单管理,每个菜单肯定需要一个对应的菜单图标,要是有一个可视化的图标选择组件就好了,最好是直接选择图标,就能得到对应的 ...

  9. iOS-UIView-设置背景图片4种方式

    一 . 设置UIView的背景图片 1.将图片作为UIView的背景色,该方法过于占内存,不建议使用.     //1.imageNamed方式 self.view.backgroundColor = ...

随机推荐

  1. React初步

    今天整理一下自己关于react的学习笔记. 什么是React? 学习某一个框架首先得知道这个框架是干什么的,它的特点是什么,有哪些优点和缺点. React有4个特点 组件化 虚拟DOM 单项数据流 j ...

  2. 《第一行代码》学习笔记11-活动Activity(9)

    1.android:theme,是用于给当前活动指定主题的,Android系统内置很多主题可以选择,@android:style/Theme.Dialog则是 让DialogActivity使用对话框 ...

  3. ORACLE SQL单行函数(一)【weber出品必属精品】

    1.SUBSTR:求父串中的子串 SUBSTR('HelloWorld',1,5) 1:代表子串的起始位置,如果为正,正数,如果为负,倒数 5:代表字串的终止位置,只能向右数,可以省略,如果省略就是数 ...

  4. HDU 1269 裸奔的强联通分量

    看了别人博客  http://blog.csdn.net/jokes000/article/details/7538994 #include <cstdio> #include <c ...

  5. 使用MSSM管理工具登录LOCALDB

    调试程序没有安装 sql server时,可以使用localdb.这是一个简易的sql server数据库,用于本地测试是很方便,省去安装SQL SERVER的工作 电脑上安装了VS2013 VS20 ...

  6. 给div中动态添加节点并设置样式

    前端IOS今天需要动态的在图片前面添加一个按钮 主要是在使用 bt.setAttribute("class","aaa"); 可以对创建的节点使用setAttr ...

  7. AFNetworking了解

    AFNetworking了解   AFNetworking是一个讨人喜欢的网络库,适用于iOS以及Mac OS X. 它构建于在NSURLConnection, NSOperation, 以及其他熟悉 ...

  8. C语言-cout<<"123"<<"45"<<endl;

    VC中头文件为:#include <iostream.h> 这个在c中没有.是C++引进的. cout<头文件#include中printf()类似. 只是不需要标明数据类型. en ...

  9. 25045操作标准子程序集41.C

    /* ;程 序 最 后 修 改 时 间 0-4-3 23:43 ;软 件 标 题:25045操作标准子程序集41 ;软 件 说 明:25045 I2C 串行EEPROM 驱动 ;___________ ...

  10. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(1)--后端

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(1)--后端 chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的购物车 ...