一、简介

UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信、微博等应⽤。

二、UITabBarController的使用

1、首先初始化UITabBarController

2、设置UIWindow的rootViewController为UITabBarController

3、创建相应的子控制器(viewcontroller)

4、把子控制器添加到UITabBarController

代码:

//
// AppDelegate.m
// 微信
//
// Created by Oran Wu on 15-11-5.
// Copyright (c) 2015年 Xinxin. All rights reserved.
// #import "AppDelegate.h"
#import "WeChatViewController.h"
#import "AddressBookViewController.h"
#import "FindViewController.h"
#import "MyViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建Window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //创建子控制器
WeChatViewController *WeChatVC = [[WeChatViewController alloc] init];
AddressBookViewController *AddressBookVC = [[AddressBookViewController alloc] init];
FindViewController *FindVC = [[FindViewController alloc] init];
MyViewController *MyVC = [[MyViewController alloc] init]; //设置UITabBarButton的图片(normal)与选中时图片(selected)
UIImage *WeChatImage = [UIImage imageNamed:@"tabbar_mainframe"];
UIImage *WeChatSeletedImage = [UIImage imageNamed:@"tabbar_mainframeHL"];
WeChatVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"微信" image:WeChatImage selectedImage:WeChatSeletedImage]; UIImage *AddressImage = [UIImage imageNamed:@"tabbar_contacts"];
UIImage *AddressSeletedImage = [UIImage imageNamed:@"tabbar_contactsHL"];
AddressBookVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通讯录" image:AddressImage selectedImage:AddressSeletedImage]; UIImage *FineImage = [UIImage imageNamed:@"tabbar_discover"];
UIImage *FineSeletedImage = [UIImage imageNamed:@"tabbar_discoverHL"];
FindVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:FineImage selectedImage:FineSeletedImage];
//提醒数字
FindVC.tabBarItem.badgeValue = @""; UIImage *MyImage = [UIImage imageNamed:@"tabbar_me"];
UIImage *MySeletedImage = [UIImage imageNamed:@"tabbar_meHL"];
MyVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我" image:MyImage selectedImage:MySeletedImage]; //初始化各ViewController的导航控制器
UINavigationController *WeChatNav = [[UINavigationController alloc] initWithRootViewController:WeChatVC];
UINavigationController *AddressBookNav = [[UINavigationController alloc] initWithRootViewController:AddressBookVC];
UINavigationController *FindNav = [[UINavigationController alloc] initWithRootViewController:FindVC];
UINavigationController *MyNav = [[UINavigationController alloc] initWithRootViewController:MyVC]; //初始化一个控制器
UITabBarController *TabBarCtrl = [[UITabBarController alloc] init];
TabBarCtrl.viewControllers = [NSArray arrayWithObjects:WeChatNav,AddressBookNav,FindNav,MyNav, nil]; //设置控制器为Window的根控制器
self.window.rootViewController = TabBarCtrl;
//设置window的背景颜色
self.window.backgroundColor = [UIColor whiteColor]; //设置Window为主窗口并显示出来
[self.window makeKeyAndVisible]; // Override point for customization after application launch.
return YES;
}

三、UITabBar

下方的工具条称为UITabBar ,如果UITabBarController有N个子控制器,那么UITabBar内部就会有N 个UITabBarButton作为子控件与之对应。

注意:UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。

在上面的程序中,UITabBarController有4个子控制器,所以UITabBar中有4个UITabBarButton,UITabBar的结构⼤大致如下图所示:

ios基础篇(八)——UITabBarController的简单介绍的更多相关文章

  1. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  2. Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步

    Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述     PV操作是对信号量进行的操作.     进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...

  3. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. Deep learning:三十八(Stacked CNN简单介绍)

    http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...

  6. c# 扩展方法奇思妙用基础篇八:Distinct 扩展(转载)

    转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distin ...

  7. iOS基础篇(十五)——UIScrollView的基本用法

    滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...

  8. 第一篇:SpringBoot2.0简单介绍

    距离Spring Boot1.0发布已经4年了,今年3月份SpringBoot2.0正式发布.让我们一起来了解一下它. Spring Boot主要依赖于Spring,整合了很多框架的使用方式,帮助开发 ...

  9. c# 扩展方法奇思妙用基础篇八:Distinct 扩展

    刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅 var p1 = products.Distinct ...

  10. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

随机推荐

  1. hdu 5137 How Many Maos Does the Guanxi Worth 最短路 spfa

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  2. nginx使用ssl模块配置HTTPS支持

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这 ...

  3. Thinkphp 3.2 添加 验证码 如何添加。

    1,在home模块indexController.class.php中,加入以下代码 <?php namespace Home\Controller; use Think\Controller; ...

  4. 2dx中文乱码问题

    我们的代码里面有一个bug 为了跟之前兼容的策划导表工具兼容 导表工具导出的excel全部都是ansi的 为了兼容就只能手动改成utf 8 无bom格式 后来策划嫌烦了 就让在程序段处理这个 研究了好 ...

  5. iOS - Swift Struct 结构体

    1.Struct 的创建 1.1 基本定义 结构体的定义 // 定义结构体数据类型 struct BookInfo { // 每个属性变量都必须初始化 var ID:Int = 0 var Name: ...

  6. 对象导论 Thinking in Java 第一章

    1.1 抽象过程 1.人们能够解决问题的复杂性直接取决于抽象的类型和质量. 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏的具体实现 1.程序猿分为:类创建者 和 客户端程序 ...

  7. 学习日记day9: PC端页面流程优化

    <!DOCTYPE html><html lang="en"><head> <meta charset="gb2312" ...

  8. Openfire 是怎么存离线消息

    原文:http://myopenfire.com/article/getarticle/26 1.openfire默认怎么存离线消息   在默认情况下,不添加任何插件的情况下,当用户不在线,对于发送给 ...

  9. CSS3_新特性预览

    一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信.  它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...

  10. 有关使用Maven常见问题总结(Eclipse中使用Maven、Maven项目部署到tomcat等问题)

    http://blog.csdn.net/sunitjy/article/details/42709311 ********************************************** ...