本章教学效果:
核心代码 封装工具类Tools: HTTools.h
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface HTTools : NSObject //工厂模式:想要创建一个Button + (UIButton *)createButton:(CGRect)frame bgColor:(UIColor *)bgColor title:(NSString *)title titleColor:(UIColor *)titleColor tag:(NSInteger)tag action:(SEL)action vc:(id)vc; //创建标签 + (UILabel *)createLabel:(CGRect)frame text:(NSString *)text textAlignment:(NSTextAlignment)textAlignment textColor:(UIColor *)textColor bgColor:(UIColor *)bgColor tag:(NSInteger)tag; @endHTTools.m
#import "HTTools.h" @implementation HTTools + (UIButton *)createButton:(CGRect)frame bgColor:(UIColor *)bgColor title:(NSString *)title titleColor:(UIColor *)titleColor tag:(NSInteger)tag action:(SEL)action vc:(id)vc { UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = frame; button.backgroundColor = bgColor; [button setTitle:title forState:UIControlStateNormal]; [button setTitleColor:titleColor forState:UIControlStateNormal]; button.tag = tag; [button addTarget:vc action:action forControlEvents:UIControlEventTouchUpInside]; return button; } + (UILabel *)createLabel:(CGRect)frame text:(NSString *)text textAlignment:(NSTextAlignment)textAlignment textColor:(UIColor *)textColor bgColor:(UIColor *)bgColor tag:(NSInteger)tag { UILabel * label = [[UILabel alloc] init]; label.frame = frame; label.text = text; label.textAlignment = textAlignment; label.textColor = textColor; label.backgroundColor = bgColor; label.tag = tag; return label; } @endAppDelegate.m
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; /** * 标签栏控制器UITabBarController * 标签栏控制器的工作原理和导航控制器一样,都是用来管理子视图控制器之间的层次关系 * * 不同点:导航控制器使用的是压栈和出栈,但是标签栏控制器上的所有子视图控制器层次上是平级的,就是说所有的子视图控制器平铺在标签栏控制器之上 */ RootViewController * root = [[RootViewController alloc] init]; UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:root]; //为root上的导航条添加标题,导航条上的内容必须通过导航控制器上的子视图控制器对象调用navigationItem的属性设置 root.navigationItem.title = @"首页"; //同样的为标签栏控制器上的视图添加标题 使用标签栏控制器上的子视图控制器对象调用tabBarItem.title nav.tabBarItem.title = @"界面1"; SecondViewController * second = [[SecondViewController alloc] init]; second.tabBarItem.title = @"界面2"; ThirdViewController * third = [[ThirdViewController alloc] init]; third.tabBarItem.title = @"界面3"; FourViewController * four = [[FourViewController alloc] init]; four.tabBarItem.title = @"界面4"; //创建标签栏控制器对象 UITabBarController * tabBar = [[UITabBarController alloc] init]; //向tabBarController上添加子视图控制器 tabBar.viewControllers = @[nav,second,third,four]; self.window.rootViewController = tabBar; [self.window makeKeyAndVisible];demo地址