iOS-基础控件--UITabBarController

**多情自古伤离别**<傲骨燕>


UITabBarController 和UINavigationController类似(可以相互嵌套使用),UITabBarController也可以管理多个控制器,完成控制器之间的切换

一般步骤就是下面这样

  • 创建初始化UITabBarController
  • 设置UIWindow的rootViewController为UITabBarController
  • 创建相应的子控制器(viewcontroller)
  • 把子控制器添加到UITabBarController
代码实例: 有六个标签的UITabBarController

首先是建立六个视图控制器并引入(在AppDelegate里面演示的)

#import"FirstViewController.h"
#import"SecondViewController.h"
#import"ThreeViewController.h"
#import"ForthViewController.h"
#import"FiveViewController.h"
#import"SixViewController.h"    

创建Window:

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

self.window.backgroundColor = [UIColor cyanColor];

[self.window makeKeyAndVisible];

创建子视图控制器:
//第一个标签

FirstViewController *firstVC = [FirstViewController new];
UINavigationController *firstNC = [[UINavigationController alloc] initWithRootViewController:firstVC];

// 第一种设置tabBar外观方法(系统样式)
// 参数1:系统tabbar外观方法(系统样式)
// 参数2:tabbarItem的tag值

firstNC.tabBarItem= [[UITabBarItem alloc] initWithTabBarSystemItem:(UITabBarSystemItemHistory) tag:101];

//第二个标签

SecondViewController *secondVC = [SecondViewController new];
UINavigationController *secondNC = [[UINavigationController alloc] initWithRootViewController:secondVC];

//第二种设置tabbar外观方法(自定义tabbar样式)

UIImage *secondNCimage = [UIImage imageNamed:@"carGary"];
//未选中时展示的图片

//图片不被渲染,保持图片本身样式
secondNCimage = [secondNCimage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//选中时的图片
UIImage *secondSelectedImage = [UIImage imageNamed:@"carRed"];

secondSelectedImage = [secondSelectedImage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//设置tabbarItem外观
//参数1:tabBar标题
//参数2:未选中时展示的图片
//参数3:选中时展示的图片

secondNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第二页" image:secondNCimage selectedImage:secondSelectedImage];   

//第三个标签

ThreeViewController *threeVC = [ThreeViewController new];
UINavigationController *threeNC = [[UINavigationController alloc] initWithRootViewController:threeVC];

//第二种设置tabbar外观方法(自定义tabbar样式)

UIImage *threeNCimage = [UIImage imageNamed:@"findGray"];//未选中时展示的图片

//图片不被渲染,保持图片本身样式
threeNCimage = [threeNCimage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//选中时的图片
UIImage *threeSelectedImage = [UIImage imageNamed:@"findRed"];
threeSelectedImage = [threeSelectedImage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//设置tabbarItem外观
//参数1:tabBar标题
//参数2:未选中时展示的图片
//参数3:选中时展示的图片

 threeNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第三页" image:threeNCimage selectedImage:threeSelectedImage];

//第四个标签

ForthViewController *fourthVC = [ForthViewController new];
UINavigationController *forthNC = [[UINavigationController alloc] initWithRootViewController:fourthVC];

//第二种设置tabbar外观方法(自定义tabbar样式)

UIImage *forthNCimage = [UIImage imageNamed:@"planeGary"];//未选中时展示的图片

//图片不被渲染,保持图片本身样式

forthNCimage = [forthNCimage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//选中时的图片
UIImage *forthSelectedImage = [UIImage imageNamed:@"planeRed"];
forthSelectedImage = [forthSelectedImage imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];

//设置tabbarItem外观
//参数1:tabBar标题
//参数2:未选中时展示的图片
//参数3:选中时展示的图片

forthNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第四页" image:forthNCimage selectedImage:forthSelectedImage];

#pragma mark --- 当tabBar管理的试图控制器多于四个的时候
// tabBar 一般要求是四个控制器就足够

// 第五个标签

FifthViewController *fiveVC = [FifthViewController new];
UINavigationController *fiveNC = [[UINavigationController alloc] initWithRootViewController:fiveVC];
fiveNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第五页" image:forthNCimage selectedImage:forthSelectedImage];

// 第六个标签

SixViewController *sixVC = [SixViewController new];
UINavigationController *sixNC = [[UINavigationController alloc] initWithRootViewController:sixVC];
sixNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第六页" image:threeNCimage selectedImage:threeSelectedImage];

// 1:创建一个TabBarController
// TabBar高度是49;

 UITabBarController *mainTabBar = [UITabBarController new];

// 2:设置TabBarController的子视图控制器数组

mainTabBar.viewControllers = @[firstNC,secondNC,threeNC,forthNC,fiveNC,sixNC];

// 3:将根视图控制器设置为TabBarController

 [self.window setRootViewController:mainTabBar];

// 4:设置是否半透明

mainTabBar.tabBar.translucent=YES;

// TabBar属性
// 设置TabBar选中的颜色

 [mainTabBar.tabBar setTintColor:[UIColor greenColor]];

// 设置TabBar背景颜色

[mainTabBar.tabBar setBarTintColor:[UIColor purpleColor]];

// 改变tabBar位置

  //    [secondNC.tabBarItem setTitlePositionAdjustment:UIOffsetMake(5, 5)];

// 设置进入应用默认选中第几个

 mainTabBar.selectedIndex = 2;

// 设置全局外观
// 通过[UITabBar appearance]得到当前应用的UITabBar对象来设置tabBar外观
// 注意:设置全局外观最好在appdelegate里,否则会无效
// appearce本质是系统封装好的单例 小数据的情况下,没有必要使用单例;单例;单例是全局的,它的生命周期和程序一样长
// 使用appearce去修改相应的控件外观,应该在APPDelegate中进行设置,否则容易出现无效的情况.

[[UITabBar appearance] setBarTintColor:[UIColor blueColor]];

// 设置导航栏
[[UINavigationBar appearance] setTintColor:[UIColor yellowColor]];

// 设置代理人
mainTabBar.delegate = self;

//实现协议中的方法(< UITabBarControllerDelegate >)
//当点击某个标签时,(tabBarItem)触发该方法

 -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
 {

NSLog(@"%ld",tabBarController.selectedIndex);

   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容