一、简介

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

二、UITabBarController的使用

1、首先初始化UITabBarController

2、设置UIWindow的rootViewController为UITabBarController

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

4、把子控制器添加到UITabBarController

代码:

  1. //
  2. // AppDelegate.m
  3. // 微信
  4. //
  5. // Created by Oran Wu on 15-11-5.
  6. // Copyright (c) 2015年 Xinxin. All rights reserved.
  7. //
  8.  
  9. #import "AppDelegate.h"
  10. #import "WeChatViewController.h"
  11. #import "AddressBookViewController.h"
  12. #import "FindViewController.h"
  13. #import "MyViewController.h"
  14.  
  15. @interface AppDelegate ()
  16.  
  17. @end
  18.  
  19. @implementation AppDelegate
  20.  
  21. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  22. //创建Window
  23. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  24.  
  25. //创建子控制器
  26. WeChatViewController *WeChatVC = [[WeChatViewController alloc] init];
  27. AddressBookViewController *AddressBookVC = [[AddressBookViewController alloc] init];
  28. FindViewController *FindVC = [[FindViewController alloc] init];
  29. MyViewController *MyVC = [[MyViewController alloc] init];
  30.  
  31. //设置UITabBarButton的图片(normal)与选中时图片(selected)
  32. UIImage *WeChatImage = [UIImage imageNamed:@"tabbar_mainframe"];
  33. UIImage *WeChatSeletedImage = [UIImage imageNamed:@"tabbar_mainframeHL"];
  34. WeChatVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"微信" image:WeChatImage selectedImage:WeChatSeletedImage];
  35.  
  36. UIImage *AddressImage = [UIImage imageNamed:@"tabbar_contacts"];
  37. UIImage *AddressSeletedImage = [UIImage imageNamed:@"tabbar_contactsHL"];
  38. AddressBookVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通讯录" image:AddressImage selectedImage:AddressSeletedImage];
  39.  
  40. UIImage *FineImage = [UIImage imageNamed:@"tabbar_discover"];
  41. UIImage *FineSeletedImage = [UIImage imageNamed:@"tabbar_discoverHL"];
  42. FindVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:FineImage selectedImage:FineSeletedImage];
  43. //提醒数字
    FindVC.tabBarItem.badgeValue = @"";
  44.  
  45. UIImage *MyImage = [UIImage imageNamed:@"tabbar_me"];
  46. UIImage *MySeletedImage = [UIImage imageNamed:@"tabbar_meHL"];
  47. MyVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我" image:MyImage selectedImage:MySeletedImage];
  48.  
  49. //初始化各ViewController的导航控制器
  50. UINavigationController *WeChatNav = [[UINavigationController alloc] initWithRootViewController:WeChatVC];
  51. UINavigationController *AddressBookNav = [[UINavigationController alloc] initWithRootViewController:AddressBookVC];
  52. UINavigationController *FindNav = [[UINavigationController alloc] initWithRootViewController:FindVC];
  53. UINavigationController *MyNav = [[UINavigationController alloc] initWithRootViewController:MyVC];
  54.  
  55. //初始化一个控制器
  56. UITabBarController *TabBarCtrl = [[UITabBarController alloc] init];
  57. TabBarCtrl.viewControllers = [NSArray arrayWithObjects:WeChatNav,AddressBookNav,FindNav,MyNav, nil];
  58.  
  59. //设置控制器为Window的根控制器
  60. self.window.rootViewController = TabBarCtrl;
  61. //设置window的背景颜色
  62. self.window.backgroundColor = [UIColor whiteColor];
  63.  
  64. //设置Window为主窗口并显示出来
  65. [self.window makeKeyAndVisible];
  66.  
  67. // Override point for customization after application launch.
  68. return YES;
  69. }

三、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. poj 3335(半平面交)

    链接:http://poj.org/problem?id=3335     //大牛们常说的测模板题 ------------------------------------------------- ...

  2. asp.netMVC4(基础知识----传值问题分析)

    (1)一般在数据交互的时候,都会涉及到前后台间的相互传值,一般的情况下,方法也有多种,下面就后台定义变量往前台传值: 以下是后台代码: /// <summary> /// 展示举报信息 / ...

  3. iOS - UIToolbar

    前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIToolbar : UIView <UIBarPositioning& ...

  4. Oracle 11g安装步骤详谈

    又是十月南京阴雨天气 图书馆花了一个多小左右把11g安装折腾好了.其中折腾SQL Developer 花了好长时间,总算搞定了.好了,先总结下安装步骤,希望给后面的童鞋提高安装效率. 相互方便  共同 ...

  5. Python学习笔记4—列表

    列表定义 >>> a=['] >>> type(a) <type 'list'> >>> bool(a) #列表有值,则为true T ...

  6. go中间的&和*

    package main import "fmt" func main() { var a int = 1 var b *int = &a var c **int = &a ...

  7. PHP中file_put_contents追加和换行

    在PHP的一些应用中需要写日志或者记录一些信息,这样的话.可以使用fopen(),fwrite()以及 fclose()这些进行操作.也可以简单的使用file_get_contents()和file_ ...

  8. 转 : c++ 结构体 前向声明

    typedef struct tag_guid { ULONGLONG utime; ULONGLONG umac; }tpguid; class A { private: int m_teset1; ...

  9. zabbix实现原理及架构详解

    想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构.建议多阅读官方文档. 一.总体上zabbix的整体架构如下图所示: 重要组件说明: 1)zabbix se ...

  10. js中正则表达式 书写方法

    function test(){    var text="index.aspx?test=1&ww=2&www=3";            var   re = ...