iOS-基础控件--UITabBarController

iOS-基础控件--UITabBarController_第1张图片
**多情自古伤离别**<傲骨燕>


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);

   }

你可能感兴趣的:(iOS-基础控件--UITabBarController)