iOS学习之UITabBarController
一、标签视图控制器——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的更多相关文章
- iOS 学习之 UITabBarController
- (IBAction)btnClick:(id)sender { UITabBarController *tabBarCtrl = [[[UITabBarController alloc] init ...
- 2015最新iOS学习线路图
iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...
- ios 学习路线总结
学习方法 面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识. 尽量独立解决问题,而不是在遇到问题的第一想法是找人. 多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神 ...
- iOS学习之第二个View使用UITabBarViewController
前面有一篇博文iOS学习之Tab Bar的使用和视图切换 这是在AppDelegate里使用Tabbar,这样的程序打开就是TabbarView了,有时候我们需要给程序做一些帮助页面,或者登录页面,之 ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下:http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars数 ...
- iOS学习-压缩图片(改变图片的宽高)
压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...
- 【原】iOS学习之事件处理的原理
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...
随机推荐
- aspx网页相对布局
网页的布局 <body bgcolor="#b6b7bc"> <form id="form1" runat="server" ...
- eclipse 导入jar包
我们在用Eclipse开发程序的时候,经常想要用到第三方的jar包.这时候我们就需要在相应的工程下面导入这个jar包.以下配图说明导入jar包的步骤. 1.右击工程的根目录,点击Properties进 ...
- 高仿精仿开心网应用android源码
今天早上看到了一个不错的安卓应用源码项目,真的非常不错高仿精仿开心网应用android源码下载,希望大家能够喜欢. 原文:http://android.662p.com/thread-29 ...
- JAVA之多线程的创建
转载请注明源出处:http://www.cnblogs.com/lighten/p/5967853.html 1.概念 老调重弹,学习线程的时候总会牵扯到进程的概念,会对二者做一个区分.网上有较多的解 ...
- 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...
- SQLite开发工具
Sqlite 管理工具 SQLiteDeveloper及破解 功能特点 表结构设计,数据维护,ddl生成,加密数据库支持,sqlite2,3支持 唯一缺憾,收费,有试用期 下载地址: http://w ...
- css3选择器——导图篇
css3选择器主要有:基本选择器 , 层次选择器, 伪类选择器 , 伪元素选择器 , 属性选择器 基本选择器 层次选择器 伪类选择器分为 动态伪类选择器, 目标伪类选择器, 语言伪类选择器, U ...
- Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException:
七月 17, 2014 4:56:01 下午 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service( ...
- php ajax提交post请求出现数组被截断情况的解决方法
一.场景 今天做保存专题商品列表的时候发现,前端明明有2300多条数据,但是实际服务端接受存入数据库才166条 二.解决过程 经过调试发现前端页面提交post请求时数据量是正确的,但到服务端只能接受到 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...