复习知识点:TabBarViewController(微信框架)

TabBarViewController:标签视图控制器

application设置

创建四个视图控制器

引入视图控制器头文件

1 #import "AppDelegate.h"
2 
3 #import "RootTableViewController.h"
4 #import "FirstTableViewController.h"
5 #import "SecondTableViewController.h"
6 #import "ThirdTableViewController.h"

在application里设置TabBarViewController

设置选中图片有很多种方式,一般会用不进行渲染的方式

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2     // Override point for customization after application launch.
 3     // 第一步:创建window
 4     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 5     self.window.backgroundColor = [UIColor whiteColor];
 6     [self.window makeKeyAndVisible];
 7     
 8     // 第二步:创建UITabBarController对象
 9     UITabBarController *mainTab = [[UITabBarController alloc] init];
10     
11     // 第三步:设置window的根视图控制器
12     self.window.rootViewController = mainTab;
13     
14     // 第四步:设置UITabBarController的控制器数组
15     // 创建导航控制器并指定导航控制器的根视图控制器
16     UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] init]];
17     // 设置导航控制器的TabBarItem
18     // UIImageRenderingModeAlwaysOriginal 设置选中图片保留原有的样式,不进行渲染
19     nav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"微信" image:[[UIImage imageNamed:@"tabbar_mainframe@3x"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tabbar_mainframeHL@3x"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
20     
21     UINavigationController *fnav = [[UINavigationController alloc] initWithRootViewController:[[FirstTableViewController alloc] init]];
22     UIImage *image1 = [[UIImage imageNamed:@"tabbar_contacts@3x"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
23     // 设置选中图片保留原有的样式,不进行渲染
24     UIImage *image2 = [[UIImage imageNamed:@"tabbar_contactsHL@3x.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
25     fnav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"通讯录" image:image1 selectedImage:image2];
26     
27     UINavigationController *snvc = [[UINavigationController alloc] initWithRootViewController:[[SecondTableViewController alloc] init]];
28     snvc.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"发现" image:[UIImage imageNamed:@"tabbar_discover@3x"] tag:102];
29     
30     UINavigationController *tnvc = [[UINavigationController alloc] initWithRootViewController:[[ThirdTableViewController alloc] init]];
31     tnvc.tabBarItem.title = @"";
32     tnvc.tabBarItem.image = [UIImage imageNamed:@"tabbar_meHL@3x"];
33     
34     // 把导航视图控制器添加到标签视图控制器上
35     // 添加单一的控制器用:addChildViewController即可
36 //    [mainTab addChildViewController:nav];
37 //    [mainTab addChildViewController:fnav];
38 //    [mainTab addChildViewController:snvc];
39 //    [mainTab addChildViewController:tnvc];
40     // 将导航控制器对象添加到数组中
41     // 数组是有序的,按顺序管理
42     mainTab.viewControllers = @[nav,fnav,snvc,tnvc];
43     
44     // 设置进入应用选中第几个
45     mainTab.selectedIndex = 1;
46     
47     // TabBar 的属性
48     // 设置选中控件的颜色
49     mainTab.tabBar.tintColor = [UIColor greenColor];
50     
51     // 设置tabBar的属性
52     mainTab.tabBar.tintColor = [UIColor colorWithRed:15 / 255.0 green:178 / 255.0 blue:0 alpha:1];
53     
54     // 半透明效果
55     //    mainTab.tabBar.translucent = NO;
56     
57     // 设置tabBar的颜色
58     //    mainTab.tabBar.barTintColor = [UIColor blueColor];
59     
60     // 改变TabBar的位置
61     //    [fnav.tabBarItem setTitlePositionAdjustment:UIOffsetMake(50, 10)];
62 
63 #pragma mark UIApperance - 设置全部item的属性
64     // 导航栏的背景颜色
65     [UINavigationBar appearance].barTintColor = [UIColor lightGrayColor];
66     // 导航栏字体的颜色
67     [UINavigationBar appearance].barStyle = UIBarStyleBlack;
68     // 导航栏添加item的颜色
69     [UINavigationBar appearance].tintColor = [UIColor orangeColor];
70     
71 
72     // 设置提示
73     // 汉字显示四个
74     // 数字显示八个
75     snvc.tabBarItem.badgeValue = @"999999+";
76     
77     // 设置代理
78     mainTab.delegate = self;
79 
80     return YES;
81 }

实现清空badgeValue的方法

1 // 实现方法 , 点击后清空badgeValue
2 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
3 
4     viewController.tabBarItem.badgeValue = nil;
5 
6 }

QQ多了一个统一按钮

 // 添加统一的左按钮
    self.tabBarController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leftBarButtonItemAction:)];

原文地址:https://www.cnblogs.com/crazygeek/p/5559204.html