一、标签视图控制器——UITabBarController

  1、UITabBarController的继承关系:

@interface UITabBarController : UIViewController<UITabBarDelegate, NSCoding>

  UITabBarController和UINavigationController一样都是继承于UIViewController。

  2、创建UITabBarController

  • 程序的添加过程:UIWindow->UITabBarController->UINavigationController->UIViewController
    // 1.创建UITabBarController对象
    UITabBarController *mainTabBar = [[UITabBarController alloc] init];
    // 2.将TabBarController管理的视图控制器放到一个数组中
    NSArray *viewControllers = [NSArray arrayWithObjects:firestNav, secondNav, thirdNav, fourthNav, nil];
    // 3.设置TabBarController的子视图控制器数组
    mainTabBar.viewControllers = viewControllers;
    // 4.将根视图控制器设置成TabBarController
    [self.window setRootViewController:mainTabBar];
  • UITabBarController的重要属性:
  • viewControllers:管理的视图控制器(NSArray)
  • tabBar:标签栏
  • selectedIndex:选中的某个tabBarItem
  • delegate:代理(通过协议监听当前点击了哪个标签,代码示例)
// 点击某个标签时(tabBarItem)时触发该方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    viewController.tabBarItem.badgeValue = nil;
}

二、UITabBar

  1、UITabBar概述

  • UITabBar包含多个UITabBarItem,每一个UITabBarItem对应一个UIViewController。UITabBar的高度是49。
  • 系统最多只显示个UITabBarItem,当UITabBarItem超过5个时系统会自动增加一个更多按钮,点击更多按钮没有在底部出现的按钮会以列表的形式显示出来。(如下图所示)

  2、UITabBar的属性:tintColor、barTintColor、图像设置等。

    // TabBar的属性

    // 设置选中的颜色
    mainTabBar.tabBar.tintColor = [UIColor greenColor];

    // 半透明效果,默认打开
    mainTabBar.tabBar.translucent = NO;

    // 设置tabBar的颜色
    mainTabBar.tabBar.barTintColor = [UIColor whiteColor];

    // 设置提示
    thirdVC.tabBarItem.badgeValue = @"99+";

    // 改变tabBar的位置(如果Item重叠可能会导致不能点击,纵向移动的是文字)
    [secondVC.tabBarItem setTitlePositionAdjustment:UIOffsetMake(, )];
   // 设置tabBarItem
    // 第一种方式:系统样式
    firstVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:];
    // 第二种方式:自定义样式
    UIViewController *secondVC = [[UIViewController alloc] init];
    secondVC.view.backgroundColor = [UIColor yellowColor];

    // 创建图片对象
    // 未选中的图片
    UIImage *secondImage = [UIImage imageNamed:@"carGary"];
    // 选中时的图片
    UIImage *secondSelectImage = [UIImage imageNamed:@"carRed"];

    // 设置图片保留原有样式,不被渲染
    secondImage = [secondImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    secondSelectImage = [secondSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    secondVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第二页" image:secondImage selectedImage:secondSelectImage];

三、自定义tabBar外观

  UIAppearance协议可以进行一键设定所有导航视图控制器的颜色的操作。

#pragma mark - UIAppearance
    // 设置全局外观
    // 通过[UITabBar appearance]得到当前应用的UITabBar对象来设置tabBar的外观
    // 注意:设置全局外观最好在AppDelegate里,否则会无效
    [[UITabBar appearance] setBarTintColor:[UIColor cyanColor]];
    [[UITabBar appearance] setTintColor:[UIColor brownColor]];
    // 改变导航栏外观颜色
    [UINavigationBar appearance].barTintColor = [UIColor blackColor];
    // 改变导航栏字体颜色
    [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName : [UIFont systemFontOfSize:]}];

iOS学习之UITabBarController的更多相关文章

  1. iOS 学习之 UITabBarController

    - (IBAction)btnClick:(id)sender { UITabBarController *tabBarCtrl = [[[UITabBarController alloc] init ...

  2. 2015最新iOS学习线路图

    iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...

  3. ios 学习路线总结

    学习方法 面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识. 尽量独立解决问题,而不是在遇到问题的第一想法是找人. 多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神 ...

  4. iOS学习之第二个View使用UITabBarViewController

    前面有一篇博文iOS学习之Tab Bar的使用和视图切换 这是在AppDelegate里使用Tabbar,这样的程序打开就是TabbarView了,有时候我们需要给程序做一些帮助页面,或者登录页面,之 ...

  5. iOS学习笔记-自己动手写RESideMenu

    代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...

  6. iOS学习-压缩图片(改变图片的宽高)

    压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...

  7. 【原】iOS学习之事件处理的原理

    在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...

  8. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  9. iOS 怎么设置 UITabBarController 的第n个item为第一响应者?

    iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...

随机推荐

  1. 使用UI Automation实现自动化测试 --工具使用

    当前项目进行三个多月了,好久也没有写日志了:空下点时间,补写下N久没写的日志 介绍下两个工具 我本人正常使用的UISpy.exe工具和inspect.exe工具 这是UISPY工具使用的图,正常使用到 ...

  2. MongoDB 2: 安装和使用

    导读:上篇博客中简单介绍了MongoDB,本篇文章主要是介绍Mongo的安装和使用(环境为win8).(PS:这是一篇没什么技术含量的文章,仅是个人的笔记式文档)下一篇博客,将介绍Mongo使用过程中 ...

  3. Json.net实现方便的Json转C#(dynamic动态类型)对象

    以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收.这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦. 比如之前做的一个接 ...

  4. Windows 2003 + IIS6.0 相关 401.1 或 401.2 等问题解决

    我自己处理的过程: 1. 问题场景: 1.1 我本身有一个虚拟机为 win2003 + iis6.0 的环境 c:\ 为NTFS 格式 D:\为Fat32 格式 1.2 我需要部署一个 asp.net ...

  5. Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式

    本文主要介绍多人视频会议服务端架构方式,文章来自博客园RTC.Blacker,转载必须说明出处,欢迎关注个人微信公众号blacker,更多详见www.rtc.help 随着移动互联网的迅速发展,很多公 ...

  6. EasyUI datagrid 复杂表头处理

    1:表头固定(前台写) 参照官方:http://www.jeasyui.net/demo/334.html 效果图: 源代码如下: <!DOCTYPE html> <html> ...

  7. JavaScript高级 引用类型(一)《JavaScript高级程序设计(第三版)》

    引用类型是一种数据结构.它也被称作类.有时也被称作 对象的定义. 对象 是某个特定引用类型的实例.   一.Object类型 表达式上下文(expression context):指能够返回一个值 语 ...

  8. [原]SQL_实验2.1.3 清华大学出版社

    本文出自:http://blog.csdn.net/svitter 实验目标:熟悉实体完整性,参照完整性,事务的处理: /*1.在数据库school表中建立表Stu_uion,进行主键约束,在没有违反 ...

  9. c++对象模型以及内存布局的研究

    先引出问题,看一段代码: #include <iostream> using namespace std; class A { }; class B { public: B() {} ~B ...

  10. 在javascript中如何取消事件冒泡

    如果在javascript中只希望事件发生在它的目标而不是在它的父元素上,即取消它的冒泡事件的发生,该如何做?因为按照javascript发生事件的顺序,它由两个阶段:分别从根元素--父元素--目标元 ...