一、介绍

如今iOS开发过程中,最常见的一种UI架构是:界面底部是四五个tab bar 、中间是内容显示、顶部是包括标题及返回等操作button,当点击进入某个模块后可以点击进行返回。这样的架构的应用比較常见的如:微信、支付宝、京东、去哪儿等大部分应用都是这样的UI架构。下图所看到的:

二、创建方法

iOS开发SDK中提供了比較方便的类:UITabBarController、UINavigationController、UIViewController组合起来进行实现。

通常在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 。应用生命周期方法中完毕主UI架构的创建。

详细步骤为 :1、新建与tab bar个数一致的UIViewController 实例,初始化title,button等。

                      2、新建与tab bar个数一致UINavigationController实例,通过调用initWithRootViewController 分别赋给响应的UIViewController实例。

                      3、新建一个UITabBarController实例变量,然后给UITabBarController的viewControllers数组赋值为上面新建的多个UINavigationController实例。

4、把AppDelegate中的window属性的 rootViewController 设置为一个UITabBarController实例变量,

                      5、然后调用[self.window makeKeyAndVisible]方法显示界面。

三、详细实现代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   

    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

    self.window.backgroundColor= [UIColor redColor];

    [self loadMainFrame];

    [self.window makeKeyAndVisible];

    return YES;

}

详细的实现位于loadMainFrame方法中

-(void)loadMainFrame{

    LOneViewController *oneController = [[LOneViewController alloc]init];

    UINavigationController *onNav = [[UINavigationController alloc]initWithRootViewController:oneController];

    oneController.tabBarItem.title=@"First";

    oneController.tabBarItem.image = [UIImage imageNamed:@"one.png"];

  LOneViewController *twoController = [[LOneViewController alloc]init];

    UINavigationController *twoNav = [[UINavigationController alloc]initWithRootViewController:oneController];

    twoController.tabBarItem.title=@"First";

    twoController.tabBarItem.image = [UIImage imageNamed:@"one.png"];

    LThreeViewController *threeController = [[LThreeViewController alloc]init];

    UINavigationController *threeNav = [[UINavigationController alloc]initWithRootViewController:threeController];

    threeNav.tabBarItem.title=@"Three";

    threeNav.tabBarItem.image=[UIImage imageNamed:@"three.png"];

    LFourViewController *fourController = [[LFourViewController alloc]init];

    UINavigationController *fourNav = [[UINavigationController alloc]initWithRootViewController:fourController];

    fourNav.tabBarItem.title=@"Four";

    fourNav.tabBarItem.image=[UIImage imageNamed:@"four.png"];

    fourNav.navigationBar.tintColor=[UIColor yellowColor];

    LFiveViewController *fiveController = [[LFiveViewController alloc]init];

    UINavigationController *fiveNav = [[UINavigationController alloc]initWithRootViewController:fiveController];

    fiveNav.navigationBar.tintColor=[UIColor yellowColor];

    fiveNav.tabBarItem.title=@"Five";

    fiveNav.tabBarItem.image=[UIImage imageNamed:@"five.png"];    

    UITabBarController *tabController=[[UITabBarController alloc]init];

    [tabController setViewControllers:@[onNav,twoNav,threeNav,fourNav,fiveNav] ];

    self.window.rootViewController = tabController;

}

如上面代码所看到的:新建了四个UIViewController、以及四个UINavigationController,并把四个UIViewController设置为对应UINavigationController的rootViewController,然后把四个UINavigationController分别增加到UITabBarController的ViewControllers数组中。 然后设置 self.window.rootViewController为UITabBarController,最后    通过[self.window makeKeyAndVisible];方法完毕UI架构的创建。

iOS应用主流UI架构实现的更多相关文章

  1. iOS开发UI篇—APP主流UI框架结构

    iOS开发UI篇—APP主流UI框架结构 一.简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果:                                二.搭建过程和 ...

  2. 谈谈UI架构设计的演化

    谈谈UI架构设计的演化 经典MVC 在1979年,经典MVC模式被提出. 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来,而Trygve Reenskaug在跟一些人的讨 ...

  3. IOS开发中UI编写方式——code vs. xib vs.StoryBoard

    最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...

  4. 浅谈iOS中MVVM的架构设计与团队协作

    说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...

  5. 【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

    上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析. 这篇主要讲如何从零做iOS应用架构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 ...

  6. IOS中 浅谈iOS中MVVM的架构设计与团队协作

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  7. 浅谈iOS中MVVM的架构设计与团队协作【转载】

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  8. Android主流UI开源库整理(转载)

    http://www.jianshu.com/p/47a4a7b99364 标题隐含了两个层面的意思,一个是主流,另一个是UI.主流既通用,一些常规的按钮.Switch.进度条等控件都是通用控件,因此 ...

  9. 免费素材下载:iOS 8 矢量 UI 素材套件

    小伙伴们,苹果终于在今天凌晨推送了 iOS 8 的正式版.虽然该系统并未与 iPhone6 发布会同时亮相,但对于已经提前体验尝鲜过测试版的同学来说并不陌生.iOS 8 几乎每个图标都进行了重新设计, ...

随机推荐

  1. 正确的缩写document。querySelector

    北京的夕阳,伴随淡淡的霾殇.从写字楼望去,光线是那么昏黄.没有孤雁,也没有霞光,遥想当年,还是 jQuery 独霸一方.那时的我们,写程序都习惯了使用 $,至少在对美元符号的喜爱上,与 PHP 达成了 ...

  2. 利用poi,jxl将Excel数据导入数据库

    需求:‘需要将本地的Excel中的数据经过验证之后导入数据库,在导入数据库之前在页面上展示出来 思路:将Excel导入存到session里面 去判断有没有不合法数据  如果有阻止提交 工具类: imp ...

  3. Run as ant build每次都执行两次-问题解决

    在Eclipse里面,运行ant,整个测试流程总是执行两遍,其几天试了下在DOS命令行直接调用ant, 结果发现只执行了一次,并且内存消耗好像也没那么大了,估计是eclipse自己的问题.问题解决了, ...

  4. hbase无法启动,The node /hbase is not in ZooKeeper

    问题详细描述如下: 2016-12-09 15:10:39,160 ERROR [org.apache.hadoop.hbase.client.ConnectionManager$HConnectio ...

  5. net .异步委托知识

    以前在编程中,异步用的比较少,导致C# 一些基础的 东西用法都不怎么熟悉,经常要用的时候在去查找资料比较被动,而已没真正里面理解起来,始终感觉不是自己的知识 (题外话) 首先委托关键字  Delega ...

  6. SQLServer 在存储过程里使用事务控制的简单小例子

    alter proc sp_test(     @name varchar(50))asbegin    --开始事务   begin transaction   --设置一个存储报错代码的变量   ...

  7. 1.0 windows10系统安装步骤(1)

    1.0 windows10系统安装步骤(1) 根据自己对笔记本系统的折腾,为了方便他人系统的安装,故总结笔记本系统的安装步骤 目录: 1.0 [windows10系统安装步骤(1)] 2.0 Linu ...

  8. Unity引擎GUI之Slider和Scrollbar

    Slider(滑动条):是一个主要用于形象的拖动以改变目标值的控件,他的最恰当应用是用来改变一个数值,最大值和最小值自定义,拖动滑块可在此之间改变,例如改变声音大小. Scrollbar(滚动条):是 ...

  9. Android TV 选中高亮显示

    1.开发Android TV APP, 使用遥控器选中按钮或者选着其它菜单 如果没有高亮显示,就看不出选中哪个按钮或者菜单 2.在drawable 添加 border_red.xml 设置选中高亮 & ...

  10. SQLite 在 Android 的应用

    Android提供了创建和使用SQLite数据库的API(Application Programming Interface,应用程序编程接口). 在Android系统中,主要由类SQLiteData ...