iOS开发之UITabBarController

1、概述数组

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

2UITabBarController的简单使用框架

UITabBarController的使用步骤:atom

(1)初始化UITabBarController索引

(2)设置UIWindow的rootViewController为UITabBarController图片

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

3UITabBarController的子控制器io

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

(1)添加单个子控制器select

- (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框架结构

 

七、         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....");//关闭后会执行

}];

相关文章
相关标签/搜索