iOS开发之UITabBarController

1、概述

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

2UITabBarController的简单使用

UITabBarController的使用步骤:

(1)初始化UITabBarController

(2)设置UIWindow的rootViewController为UITabBarController

(3)根据具体情况,通过addChildViewController方法添加对应个数的子控制器

3UITabBarController的子控制器

UITabBarController添加控制器的方式有2种:

(1)添加单个子控制器

- (void)addChildViewController:(UIViewController *)childController;

(2)设置子控制器数组

@property(nonatomic,copy) NSArray *viewControllers;

(3)根据索引选择子控制器

self.selectedIndex = 0;//选中第0个子控制器

4UITabBar

如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件。

例如:如果UITabBarController有4个子控制器,那么UITabBar的结构大致如下图所示:

5UITabBarButton

UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性决定:

例如:

UIViewController *vc1 = [[UIViewController alloc] init];

vc1.tabBarItem.title = @"联系人";

vc1.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor"];

点击相关tabBarItem后,系统会自动把按钮变为上图所示蓝色,并不需要提供蓝色的按钮图片了。也可以通过调用selectedImage方法设置点击后显示的图片。

例如:

childVc.tabBarItem.selectedImage =

[[UIImage imageNamed:selectedImageName]

imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

IOS7必须设置渲染模式为不渲染,否则选择后还会变成蓝色。IOS6不用设置。但IOS6没有此方法,所以用此方法前要根据系统版本进行分情况。例如:

#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)

if (iOS7) {

childVc.tabBarItem.selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

} else {

childVc.tabBarItem.selectedImage = selectedImage;

}

也可以在storyboard中直接拖一个UITabBarControllerView过去,然后右键选择view controllers拖线到子控制器添加子控制器,如下图:

6App主流UI框架结构

7、         Modal

除了push之外,还有另外一种控制器的切换方式,那就是Modal。任何控制器都能通过Modal的形式展示出来。Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止。

Modal的形式展示控制器:

-(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion

例如:

MJTwoViewController *two = [[MJTwoViewController alloc] init];

[self presentViewController:two animated:YES completion:^{

NSLog(@"展示MJTwoViewController完毕.......");//展示完毕会调用

}];

关闭当初Modal出来的控制器:

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;

例如:

[self dismissViewControllerAnimated:YES completion:^{

NSLog(@"关闭MJTwoViewController....");//关闭后会执行

}];

时间: 2024-12-09 18:22:47

iOS开发之UITabBarController的相关文章

iOS开发之UITabBarController和UICollectionView的使用

这一篇要记录的是iOS开发中UITabBarController控件和UICollectionView控件的使用.APP跑起来之后的效果例如以下图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >        watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ

ios开发之Swift标签栏按钮UITabBarItem样式修改(图标文字尺寸,颜色等)

UITabBarItem在开发中非常的常用了它可以用来设置字体颜色及图片的设置等等,下面我们来看一篇关于ios开发之Swift标签栏按钮UITabBarItem样式修改(图标文字尺寸,颜色等)的例子,具体的细节如下所示. 1,tabBarItem图片的推荐尺寸和最大支持尺寸 下面是标签栏(UITabBar)中tab按钮图标分别在1x.2x.3x下不会压缩变形的尺寸: @1x : 推荐 25 x 25   (最大: 48 x 32)@2x : 推荐 50 x 50   (最大: 96 x 64)@

IOS开发之copy的问题

copy的目的就是修改副本,修改原始对象和副本时不会产生干扰. 定义一个不可变属性A,再定义一个可变属性B.用B做添加删除等操作后再将B赋值给A时,有些人习惯用A = B:其实这样是不安全的. 假设有下面的一段代码: ? 1 2 3 4 5 6 7 8 9 10   int main() {    NSMutableString *strM = [NSMutableString [email protected]"123"];    NSString *str = strM;    N

iOS开发之WKWebView简单使用和常用使用场景

iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版.本着对新事物的好奇,就上网查了一下,但是找了好多个都没说的多了详细,于是就问谷歌,找文档,看看使用方法,试用了一下,果然不错,记录下来,大家分享! WKWebView的特点: 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷

iOS开发之Auto Layout入门

随着iPhone6与iOS8的临近,适配的问题讲更加复杂,最近学习了一下Auto Layout的使用,与大家分享.  什么是Auto Layout? Auto Layout是iOS6发布后引入的一个全新的布局特性,其目的是弥补以往Autoresizing在布局方面的不足之处,以及未来面对更多尺寸适配时界面布局可以更好的适应. 为什么要用Auto Layout? Autolayout能解决不同屏幕(iPhone4,iPhone5,iPad...)之间的适配问题. 在iPhone4时代开发者只需要适

iOS开发之CocoaPods的使用

透明色:00ff00ff //设置柱状图的颜色                ColorSet cs = new ColorSet();                cs.Id = "colorset1"; #region 设置柱状图的颜色 待开发                    string strColor = oYAXIS.Color;                    switch (strColor)                    {           

iOS开发之UILabel

UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: ? 1 2 3 4 5 6 7 8 9 10 /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 40); /*初始化*/ UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect]; /*一些属性的设置*/ titleLabel.font = [UIFont systemFontOf

iOS开发之多XIB之间相互关联

Xib link Xib 1.直接加载xib中的UIView 创建一个View1.xib, 随便设一个背景色,加一个标识UILabel, 这样好知道是这个view是哪一个view. 你可以在这个view上加作意的subview,我只是说明原理,所以这儿并没有加作何subview. 最终我的View1如下图: 由于View1会放到其它View上作为subview,所以这儿size是Freeform, Status Bar是:None. 将下面代码放到viewDidLoad中: &1这行代码就是加载

iOS开发之UISearchBar初探

iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开发需求.比如:修改placeholder的颜色.修改UISearchBar上面的UITextfield的背景颜色.修改UITextfield上面的照片等等. 为了实现上述的需求,最好写一个UISearchBar的子类就叫LSSearchBar吧 LSSearchBar.h如下: #import <U