搭建主流框架界面实现效果我们在玩iPhone应用的时候,是不是发现大部分应用的结构都类似于上图。下面的TabBar控制器可以切换子控制器,上面有一个Navigation导航栏。本文主要是搭建主体的框架,数据暂时没有添加和分析。做项目的基本流程1.搭建项目的主框架,先搭建tabBarController(下面有一个)再搭建NavigationController(上面有一个,每个子控制器都不一样)2.思考关于开发方式Storyboard构建(接口少时使用)纯代码构建(接口超过5个时使用,便于管理,商业项目一般使用此方法)从0构建主流框架(纯代码)1.准备环境部署2.基础界面初步搭建第一步设计目录(按照模块化+MVC的思想,创建基础文件目录和文件)用模块化的思想创建目录路径(一般创建在真正的路径,然后拖到项目中)在TabBarController的第二步自定义代码(在AppDelegate.m中设置窗口启动根控制器)-(BOOL)appli阳离子:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{//1。创建窗口self.window=[[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];//2.设置窗口的根控制器CYXTabBarController*tabBarVC=[[CYXTabBarControlleralloc]init];self.window.rootViewController=tabBarVC;//3.显示窗口[self.windowmakeKeyAndVisible];returnYES;}第三步在CYXTabBarController.m中创建并添加子控制器-(void)viewDidLoad{[superviewDidLoad];//1.Add***controller//1.1InitializeCYXOneViewController*oneVC=[[CYXOneViewControlleralloc]init];//1.2添加oneVC作为UINavigationController的根控制器UINavigationController*nav1=[[UINavigationControlleralloc]initWithRootViewController:oneVC];//设置tabBar的标题nav1.title=@"Home";[nav1.navigationBarsetBackgroundImage:[UIImageimageNamed:@"commentary_num_bg"]forBarMetrics:UIBarMetricsDefault];//设置tabBar的图标nav1.tabBarItem.image=[UIImageimageNamed:@"tab_home_icon"];//设置navigationBar的标题oneVC.navigationItem.title=@"Home";//设置背景颜色(这些操作可以交给各个单独的子控制器)oneVC.view.backgroundColor=[UIColorwhiteColor];//1.3将UINavigationController交给UITabBarController管理[selfaddChildViewController:nav1];//2.添加第二个ControllerCYXTwoViewController*twoVC=[[CYXTwoViewControlleralloc]init];UINavigationController*nav2=[[UINavigationControlleralloc]initWithRootViewController:twoVC];nav2.title=@"Technology";nav2.tabBarItem.image=[UIImageimageNamed:@"js"];twoVC.navigationItem.title=@"技术";twoVC.view.backgroundColor=[UIColorblueColor];[selfaddChildViewCont滚轮:导航2];//3。添加第三个控制器CYXThreeViewController*threeVC=[[CYXThreeViewControlleralloc]init];UINavigationController*nav3=[[UINavigationControlleralloc]initWithRootViewController:threeVC];nav3.title=@"博文";nav3。tabBarItem.image=[UIImageimageNamed:@"qw"];threeVC.navigationItem.title=@"博文";threeVC.view.backgroundColor=[UIColoryellowColor];[selfaddChildViewController:nav3];//4.添加第四个控制器CYXFourViewController*fourVC=[[CYXFourViewControlleralloc]init];UINavigationController*nav4=[[UINavigationControlleralloc]initWithRootViewController:fourVC];nav4.title=@"我的江湖";nav4.tabBarItem.image=[UIImageimageNamed:@"user"];fourVC.navigationItem.title=@"我的江湖";fourVC.view.backgroundColor=[UIColorgrayColor];[selfaddChildViewController:nav4];}至此,框架就搭好了,是不是很简单?效果如图:但是你可能忍不住吐槽,这些都是多余的垃圾代码,看不懂,还是把代码提取出来吧。第四步是提取重复代码。由于以上代码都写在viewDidLoad中,重复代码过多,造成代码冗余,可扩展性低。让我们对代码进行初步优化。这里提取两种方法,一种是添加所有子控件controller方法,另一种是添加各个子controller方法-(void)viewDidLoad{[superviewDidLoad];[selfsetUpAllChildViewController];}/***添加所有子controller方法*/-(void)setUpAllChildViewController{//1.添加第一个控制器CYXOneViewController*oneVC=[[CYXOneViewControlleralloc]init];[selfsetUpOneChildViewController:oneVCimage:[UIImageimageNamed:@"tab_home_icon"]title:@"Home"];//2.添加第二个控件CYXTwoViewController*twoVC=[[CYXTwoViewControlleralloc]init];[selfsetUpOneChildViewController:twoVCimage:[UIImageimageNamed:@"js"]title:@"Technology"];//3.添加第三个控制器CYXThreeViewController*threeVC=[[CYXThreeViewControlleralloc]init];[selfsetUpOneChildViewController:threeVCimage:[UIImageimageNamed:@"qw"]title:@"博文"];//4.添加第四个控制器CYXFourViewController*fourVC=[[CYXFourViewControlleralloc]init];[selfsetUpOneChildViewController:fourVCimage:[UIImageimageNamed:@"user"]title:@"我的江湖"];}/***添加子控制器方法*/-(void)setUpOneChildViewController:(UIViewController*)viewControlleri法师:(UIImage*)imagetitle:(NSString*)title{UINavigationController*navC=[[UINavigationControlleralloc]initWithRootViewController:viewController];navC.title=title;navC.tabBarItem.image=image;[navC.navigationBarsetBackgroundImage:[UIImageimageNamed:@“commentary_num_bg”]forBarMetrics:UIBarMetricsDefault];viewController.navigationItem.title=title;[selfaddChildViewController:navC];}
