iOS学习28之UITabBarController
1. 标签视图控制器 -- UITabBarController
- 视图(UIView) ---> 图层 ---> 子视图
- 视图控制器(UIViewController) ---> 管理视图
- 导航控制器(UINavigationController) ---> 管理有层次关系的视图控制器
- 标签视图控制器(UITabBarController) ---> 管理没有层次关系的视图控制器
1> UITabBarController的继承关系
@interface UITabBarController : UIViewController <UITabBarDelegate, NSCoding>
2> UITabBarController的三层结构
3> 代码创建UITabBarController
在application: idFinishLaunchingWithOptions:方法中创建
① 创建Window(需要将工程的主故事版删除)
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
② 创建UITabBarController对象
UITabBarController *mainTabBar = [[UITabBarController alloc] init];
// 创建控制器对象
UIViewController *firstVC = [[UIViewController alloc] init];
firstVC.view.backgroundColor = [UIColor cyanColor];
// 设置tabBarItem
// 第一种方式:系统样式
firstVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:];
// 第二种方式:自定义样式
UIViewController *secondVC = [[UIViewController alloc] init];
secondVC.view.backgroundColor = [UIColor redColor];
// 创建图片
UIImage *secondImage = [UIImage imageNamed:@"carGary"];
UIImage *secondSelectImage = [UIImage imageNamed:@"carRed"];
#pragma mark - 设置图片保留原有样式
secondImage = [secondImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
secondSelectImage = [secondSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
#pragma mark -
secondVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第二页" image:secondImage selectedImage:secondSelectImage];
// thirdVC
UIViewController *thirdVC = [[UIViewController alloc] init];
thirdVC.view.backgroundColor = [UIColor purpleColor];
thirdVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:[UIImage imageNamed:@"findGray"] tag:];
// fourthVC
UIViewController *fourthVC = [[UIViewController alloc] init];
fourthVC.view.backgroundColor = [UIColor greenColor];
fourthVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我的" image:[UIImage imageNamed:@"userGray"] tag:];
// fifthVC
UIViewController *fifthVC = [[UIViewController alloc] init];
fifthVC.view.backgroundColor = [UIColor orangeColor];
fifthVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:];
// sixthVC
UIViewController *sixthVC = [[UIViewController alloc] init];
sixthVC.view.backgroundColor = [UIColor magentaColor];
sixthVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemHistory tag:];
// 设置控制器数组
mainTabBar.viewControllers = @[firstVC, secondVC, thirdVC];
③ 将UITabBarController对象设置为Window的根视图控制器
self.window.rootViewController = mainTabBar;
4> UITabBarController的重要属性
viewControllers属性的应用件 3> ② 的代码
// 设置进入应用时选中第几个
mainTabBar.selectedIndex = ;
2. UITabBar
1> 概述
UITabBar 包含多个 UITabBarItem , 每个 UITabBarItem 对应一个 UIViewController
UITabBar 的高度是
系统最多只显示 个 UITabBarItem , 当 UITabBarItem 超过 个时系统会自动增加一个更多按钮, 点击更多按钮, 没有在底部出现的按钮会以 列表 的形式显示出来
UITabBar的属性: tintColor , barTintColor , 图像设置等
2> UItabBar常用的属性
// tabBar的属性
// 设置选中的颜色
mainTabBar.tabBar.tintColor = [UIColor greenColor];
// 是否打开半透明效果
mainTabBar.tabBar.translucent = NO;
// 设置tabBar的颜色
// mainTabBar.tabBar.barTintColor = [UIColor grayColor];
3> UITabBarItem
UITabBarItem 可以通过属性 title , badgeValue 设置标题及提示
// 设置提示
thirdVC.tabBarItem.badgeValue = @"有消息";
UITabBarItem 的创建
① 系统样式
// 第一种方式:系统样式
firstVC.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:];
② 自定义样式
// 第二种方式:自定义样式
secondVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"第二页" image:secondImage selectedImage:secondSelectImage];
secondImage 和 secondSelectImage 是两个 UIImage 类型的变量
- UITabBarItem 的图片处理
// 创建图片
UIImage *secondImage = [UIImage imageNamed:@"carGary"]; UIImage *secondSelectImage = [UIImage imageNamed:@"carRed"]; #pragma mark - 设置图片保留原有样式
secondImage = [secondImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
secondSelectImage = [secondSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
3. 自定义tabBar外观(UIAppearance)
1> 概述
如果想通过一键设定所有导航试图控制器的颜色, 类似于QQ的一键换肤操作,可以通过UIAppearance 协议 来进行操作, 通过它可以对一些控件进行定义颜色等。
2> 使用代码
// 设置全局外观
// 通过[UITabBar appearance]得到当前应用的UITabBar对象来设置tabBar的外观
// 注意:设置全局外观最好在appDelegate ,否则会无效
[[UITabBar appearance] setBarTintColor:[UIColor cyanColor]]; [[UITabBar appearance] setTintColor:[UIColor brownColor]];
// 改变导航栏外观颜
[[UINavigationBar appearance] setBarTintColor:[UIColor lightGrayColor]];
// 改变导航栏字体颜
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],NSForegroundColorAttributeName, [UIFont systemFontOfSize:], NSFontAttributeName, nil]];
iOS学习28之UITabBarController的更多相关文章
- iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)
iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建) 一.UITabBarController在storyoard中得搭建 1.新建一个项目,把storyb ...
- iOS学习资料整理
视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS S ...
- iOS 学习
iOS 学习资料 (适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解 ...
- iOS 学习资料汇总
(适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...
- 2015最新iOS学习线路图
iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...
- ios 学习路线总结
学习方法 面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识. 尽量独立解决问题,而不是在遇到问题的第一想法是找人. 多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神 ...
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- iOS学习之第二个View使用UITabBarViewController
前面有一篇博文iOS学习之Tab Bar的使用和视图切换 这是在AppDelegate里使用Tabbar,这样的程序打开就是TabbarView了,有时候我们需要给程序做一些帮助页面,或者登录页面,之 ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...
随机推荐
- c语言if语句
#include<stdio.h>#include<windows.h>#include <limits.h>#include <math.h>int ...
- TCP/IP五层模型
(2)TCP/IP五层模型的协议 应用层 传输层 网络层 数据链路层 物理层 物理层:中继器.集线器.还有我们通常说的双绞线也工作在物理层 数据链路层:网桥(现已很少使用).以太网交换机(二层 ...
- Java注释@interface的用法
转---------- java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类.@Override,@Deprecated,@Suppr ...
- 关于logcat日志
最近学习android,碰到了logcat,个人总结一下. 当不出日志是解决办法: ProjectMenu---后台设置----LOG设置---LOG开关 Logcat(deprecated)和Log ...
- ISD1700系列多段语音录放系列
ISD1700系列语音芯片的基础指示:
- CLR via C#(10)-参数
一. 命名参数.可选参数 命名参数和可选参数是在Visual C#2010中引入的新特性. 笨地儿我个瓜不兮兮的,今天才知道. 可选参数:定义方法时为参数设置默认值,调用该方法时可以省略为某些形参指定 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Linux常用命令学习1---(安装、文件系统、目录操作命令cd ls mv cp rm mkdir、链接命令ln……)
1.理解Linux的文件系统:分区和挂载点 挂载点和路径名无关 /根目录下的/boot完全可以时独立于 /的独立的挂载点,只要你设置就可以 linux安装时候,必须要有这两个分区 / 和 ...
- 查看MYSQL中数据表占用的空间
由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...
- 几个国内速度最快的centos yum(更新源)
转自:http://blog.itpub.net/15711267/viewspace-1068862/ 中国科技大学源 cd /etc/yum.repos.d mv CentOS-Base.repo ...