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

  1、UITabBarController的继承关系:

  1. @interface UITabBarController : UIViewController<UITabBarDelegate, NSCoding>

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

  2、创建UITabBarController

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

二、UITabBar

  1、UITabBar概述

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

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

  1. // TabBar的属性
  2.  
  3. // 设置选中的颜色
  4. mainTabBar.tabBar.tintColor = [UIColor greenColor];
  5.  
  6. // 半透明效果,默认打开
  7. mainTabBar.tabBar.translucent = NO;
  8.  
  9. // 设置tabBar的颜色
  10. mainTabBar.tabBar.barTintColor = [UIColor whiteColor];
  11.  
  12. // 设置提示
  13. thirdVC.tabBarItem.badgeValue = @"99+";
  14.  
  15. // 改变tabBar的位置(如果Item重叠可能会导致不能点击,纵向移动的是文字)
  16. [secondVC.tabBarItem setTitlePositionAdjustment:UIOffsetMake(, )];
  1.    // 设置tabBarItem
  2. // 第一种方式:系统样式
  3. firstVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:];
  4. // 第二种方式:自定义样式
  5. UIViewController *secondVC = [[UIViewController alloc] init];
  6. secondVC.view.backgroundColor = [UIColor yellowColor];
  7.  
  8. // 创建图片对象
  9. // 未选中的图片
  10. UIImage *secondImage = [UIImage imageNamed:@"carGary"];
  11. // 选中时的图片
  12. UIImage *secondSelectImage = [UIImage imageNamed:@"carRed"];
  13.  
  14. // 设置图片保留原有样式,不被渲染
  15. secondImage = [secondImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  16. secondSelectImage = [secondSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  17.  
  18. secondVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第二页" image:secondImage selectedImage:secondSelectImage];

三、自定义tabBar外观

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

  1. #pragma mark - UIAppearance
  2. // 设置全局外观
  3. // 通过[UITabBar appearance]得到当前应用的UITabBar对象来设置tabBar的外观
  4. // 注意:设置全局外观最好在AppDelegate里,否则会无效
  5. [[UITabBar appearance] setBarTintColor:[UIColor cyanColor]];
  6. [[UITabBar appearance] setTintColor:[UIColor brownColor]];
  7. // 改变导航栏外观颜色
  8. [UINavigationBar appearance].barTintColor = [UIColor blackColor];
  9. // 改变导航栏字体颜色
  10. [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. ZJOI2009 假期的宿舍

    题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...

  2. Leetcode028. Implement strStr()

    class Solution { public: int strStr(string haystack, string needle) { ; //needle empty ; //haystack ...

  3. 【MVC】 文件及URL 的整理

    我们平时在做Asp.Net MVC(以下就简称mvc)项目的时候,页面文件结构都用了"/Views/Controllers/page.aspx",而把一些PartialView呢放 ...

  4. Oracle笔记 四、增删改、事务

    1.插入 insert into dept values(50, 'soft', 'Guangzhou'); insert into dept(deptno, dname) values(60, 's ...

  5. 1.2Android系统移植的主要工作

    1.Android移植分为两部分:应用移植和系统移植: 2.应用移植:指将第四层的应用程序一直到某一特定硬件平台上. (1)为保证应用程序能在新的平台上正常运行,需要对源代码就行一些修改,因为硬件平台 ...

  6. app打包流程

    1.什么是打包 将应用程序统一放在一个后缀是ipa的文件中,然后发给其他人,可以安装在手机上供用户或测试人员安装 2.可安装ipa的前提 ①说清楚是哪一个应用程序(App Id) ②可以安装在哪一台设 ...

  7. 如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

    大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时. 默认情况下,ASP.NET 提供请求验证.只要窗体发送包含任何 HTML,该验证都会引发错误. 您可以使用下列方法防止脚本利用: ...

  8. POJ C++程序设计 编程作业—类和对象 编程题#1

    编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序输出的结 ...

  9. C#虚方法和覆写方法

  10. python restful 框架之 eve 外网访问设置

    官网地址: http://python-eve.org/ 配合mongodb进行crud使用起来很方便,但是部署的时候遇到一个问题,按照官网和Deom说的,servername使用 '127.0.0. ...