一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理
有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器
比如,用一个控制器A去管理3个控制器B、C、D。控制器A被称为控制器B、C、D的“父控制器”;控制器B、C、D的被称为控制器A的“子控制器”
为了便于管理控制器,iOS提供了2个比较特殊的控制器
UINavigationController
UITabBarController
二、导航控制器
利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用
如图:
三、UINavigationController的使用步骤
(1)初始化UINavigationController
(2)设置UIWindow的rootViewController为UINavigationController
(3)根据具体情况,通过push方法添加对应个数的子控制器
1 #import "YYAppDelegateh"
2 #import "YYOneViewControllerh"
3
4 @implementation YYAppDelegate
5
6 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
7 {
8 selfwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
9 selfwindowbackgroundColor = [UIColor whiteColor];
10
11 //1创建一个导航控制器
12 UINavigationController nav=[[UINavigationController alloc]init];
13 //2设置导航控制器为window的根视图
14 selfwindowrootViewController=nav;
15
16
17 //3添加子控制器到导航控制器中
18 //创建一些控制器
19 UIViewController c1=[[UIViewController alloc]init];
20 //设置c1这个控制器的视图颜色
21 c1viewbackgroundColor=[UIColor redColor];
22
23 UIViewController c2=[[UIViewController alloc]init];
24 c2viewbackgroundColor=[UIColor purpleColor];
25
26 UIViewController c3=[[UIViewController alloc]init];
27 c3viewbackgroundColor=[UIColor brownColor];
28
29 //把这些控制器添加到导航控制器中
30 [nav pushViewController:c1 animated:YES];
31 [nav pushViewController:c2 animated:YES];
32 [nav pushViewController:c3 animated:YES];
33
34 [selfwindow makeKeyAndVisible];
35 return YES;
36 }
运行模拟器,可以看到一个简陋的有着三个子控制器管理着页面。
但呈现在我们眼前的只能有一个界面,我们没有必要一次性创建三个控制器在这里等着。
要求:创建三个子控制器,每个子控制器view的界面上放一个按钮,点击可以跳转到下一个界面。
实现(完成三个页面间通过按钮进行简单的跳转):
说明:这里把第一个子控制器的创建等代码写在了代理方法中。
YYAppDelegatem文件代码
1 //
2 // YYAppDelegatem
3 // 01-导航控制器的使用1
4 //
5 // Created by apple on 14-6-4
6 // Copyright (c) 2014年 itcase All rights reserved
7 //
8
9 #import "YYAppDelegateh"
10 #import "YYOneViewControllerh"
11
12 @implementation YYAppDelegate
13
14 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
15 {
16 selfwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
17 selfwindowbackgroundColor = [UIColor whiteColor];
18
19 //1创建一个导航控制器
20 UINavigationController nav=[[UINavigationController alloc]init];
21 //2设置导航控制器为window的根视图
22 selfwindowrootViewController=nav;
23
24
25 //3添加子控制器到导航控制器中
26 YYOneViewController one=[[YYOneViewController alloc]init];
27 [nav pushViewController:one animated:YES];
28
29 [selfwindow makeKeyAndVisible];
30 return YES;
31
32
33 // //创建一些控制器
34 // UIViewController c1=[[UIViewController alloc]init];
35 // //设置c1这个控制器的视图颜色
36 // c1viewbackgroundColor=[UIColor redColor];
37 //
38 // UIViewController c2=[[UIViewController alloc]init];
39 // c2viewbackgroundColor=[UIColor purpleColor];
40 //
41 // UIViewController c3=[[UIViewController alloc]init];
42 // c3viewbackgroundColor=[UIColor brownColor];
43 //
44 ////把这些控制器添加到导航控制器中
45 // [nav pushViewController:c1 animated:YES];
46 // [nav pushViewController:c2 animated:YES];
47 // [nav pushViewController:c3 animated:YES];
48 }
创建三个子控件类及对应的xib文件
YYOneViewControllerm文件
1 //
2 // YYOneViewControllerm
3 // 01-导航控制器的使用1
4 //
5 // Created by apple on 14-6-4
6 // Copyright (c) 2014年 itcase All rights reserved
7 //
8
9 #import "YYOneViewControllerh"
10 #import "YYTwoViewControllerh"
11
12 @interface YYOneViewController ()
13 /
14 跳转到第二个界面
15 /
16 - (IBAction)jump2two:(id)sender;
17
18 @end
19
20 @implementation YYOneViewController
21
22
23 - (IBAction)jump2two:(id)sender {
24 //1创建第二个子控制器
25 YYTwoViewController two=[[YYTwoViewController alloc]init];
26
27 //2把子控制器添加到导航控制器中
28 //有什么办法能够拿到导航控制器?
29 //只要当前控制器是导航控制器的子控制器,那么就可以通过该属性直接获取到当前控制器所在的导航控制器
30 [selfnavigationController pushViewController:two animated:YES];
31 }
32 @end
YYTwoViewControllerm文件
1 //
2 // YYTwoViewControllerm
3 // 01-导航控制器的使用1
4 //
5 // Created by apple on 14-6-4
6 // Copyright (c) 2014年 itcase All rights reserved
7 //
8
9 #import "YYTwoViewControllerh"
10 #import "YYThreeViewControllerh"
11 @interface YYTwoViewController ()
12 - (IBAction)jump2Three:(id)sender;
13
14 @end
15
16 @implementation YYTwoViewController
17
18 //跳转到第三个子控制器
19 - (IBAction)jump2Three:(id)sender {
20 //1创建第三个子控制器
21 YYThreeViewController three=[[YYThreeViewController alloc]init];
22 //2将子控制器添加到导航控制器中
23 [selfnavigationController pushViewController:three animated:YES];
24
25 }
26 @end
提示:只要当前控制器是导航控制器的子控制器,那么就可以通过selfnavigationController属性直接获取到当前控制器所在的导航控制器需要检查电脑配置是否符合要求。
可将显示驱动更新到最新版本。检验游戏是否有完善性,重启路由器,使加速工具,连接失败可以检查网络上对游戏的更新。
僵尸毁灭工程是一款末日生存模拟游戏,游戏中充满着诡异和压抑的气氛,除了在房内短暂停留,和在外与僵尸群拼斗以外,主角会经常奔跑在漆黑的雨夜,收集、打造物品和工具,生存下去,等待阳光的降临。
对于很多小伙伴来说,UI设计和Web前端到底有什么区别,哪一个发展前景又更好,大家都还是比较迷茫的。今天蜗牛学院就来给大家简单科普科普~
关于UI设计
1、什么是UI设计?UI设计(或称界面设计)是指对软件的人机交互、 *** 作逻辑、界面美观的整体设计。UI设计分为实体UI和虚拟UI,互联网常用的UI设计是虚拟UI,UI即UserInterface(用户界面)的简称。好的UI设计不仅是让软件变得有个性有品位,还要让软件的 *** 作变得舒适简单、自由,充分体现软件的定位和特点。比如:哪些常用功能放在什么位置用户用起来最顺手,所有会影响使用者体验的一切。如架构、互动、内容与及使用者对象、需求、价值观。
2、UI设计需要掌握的技能?视觉设计主要是以美术设计为主,界面的色彩、结构、图标等工作都需要视觉设计师来完成。主要使用的软件是以Adobe公司的软件为主,如PS、AI、AE、FW等,一般来讲从业者都是美术专业相关院校的毕业生,也有少部分计算机专业毕业生。交互设计主要是以产品交互原型设计为主,完成设计交互原型图,但这其实是一个很考验综合能力的职位,需要了解用户体验知识、界面设计知识、产品业务知识等。交互的设计软件比较多,每个都有自己的特点,比如AxureRP、Balsamiq Mockups、Omnigraffl Pro等,一般来讲都是需要一定的从业经验才能很好胜任。
3、UI设计的职责有哪些?
负责公司产品在智能电视、PC端、移动端页面/应用的整体设计;
根据需求,对产品的整体美术风格、交互设计、界面结构、 *** 作流程等做出设计;负责项目中各种交互界面、图标、LOGO、按钮等相关元素的设计与制作;
基于用户体验、人机交互、图形化设计、界面设计等前沿理论实现产品风格设计;
充分理解产品策划思路及理念,配合产品经理和研发人员实现产品界面的视觉设计;
组建和完善产品界面视觉设计规范;
根据交互设计及产品规划,完成产品(iPhone、Android 、Web平台App及网站)相关的用户界面视觉设计;
配合产品开发中的图形界面(GUI)设计。完成产品相关推广活动的专题页面、FLASH的设计及制作;
与研发团队充分沟通协作,确认可控的误差范围和视觉效果的最终实现;
根据视觉设计的发展趋势及用户研究的结果不断优化产品的图形界面;
4、UI设计目前的全国薪资水平。
关于web前端
1、什么是Web前端开发工程师? 主要进行网站开发,优化,完善的工作。网页制作是Web 10时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。一位好的Web前端开发工程师在知识体系上既要有广度,又要有深度,所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。现在说的重点不在于讲解技术,而是更侧重于对技巧的讲解。技术非黑即白,只有对和错,而技巧则见仁见智。以前会Photoshop和Dreamweaver就可以制作网页,现在只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好,这方面的专业人才近两年来备受青睐。
2、Web前端工程师需要掌握的技能?必须掌握基本的Web前端开发技术,其中包括:CSS、HTML、SEO、DOM、BOM、Ajax、JavaScript等,在掌握这些技术的同时,还要清楚地了解它们在不同浏览器上的兼容情况、渲染原理和存在的Bug。在一名合格的前端工程师的知识结构中,网站性能优化、SEO和服务器端的基础知识也是必须掌握的。必须学会运用各种工具进行辅助开发。除了要掌握技术层面的知识,还要掌握理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持,等等。可见,看似简单的网页制作,如果要做得更好、更专业,真的是不简单。这就是前端开发的特点,也是让很多人困惑的原因。如此繁杂的知识体系让新手学习起来无从下手,对于老手来说,也时常不知道下一步该学什么。代码质量是前端开发中应该重点考虑的问题之一。例如,实现一个网站界面可能会有无数种方案,但有些方案的维护成本会比较高,有些方案会存在性能问题,而有些方案则更易于维护,而且性能也比较好。这里的关键影响因素就是代码质量。CSS、HTML、JavaScript这三种前端开发语言的特点是不同的,对代码质量的要求也不同,但它们之间又有着千丝万缕的联系。3、Web前端工程师的职责有哪些?
利用(X)HTML/CSS/JavaScript/Flash等各种Web技术进行客户端产品的开发;
为网站上提供的产品和服务实现一流的Web界面;
优化代码并保持良好兼容性;
Web前端表现层及与前后端交互的架构设计和开发;
配合后台开发人员实现产品界面和功能;
利用各种Web技术模拟开发产品原型;
Web新技术调研和资讯整理。
4、Web前端目前的全国薪资水平。
综合来说,UI设计和Web前端开发都与产品页面有很大关系的,只是前者更偏向于设计,而后者需要懂得更多的技术,需要把UI设计出来的东西与后端结合,实现出来,所以Web前端的核心发展肯定会更好,但相对而言学习也会比UI难一点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)