iOS开发UI篇—控制器的View的创建

一、6种创建控制器View的方式

 1 #import "NJAppDelegate.h"  2 #import "NJViewController.h"  3 /*  4  1.没有同名xib情况下
 5  2.通过 storyboard 创建
 6  3.有指定xib情况下创建
 7  4.有同名xib情况
 8  5.有同名去掉controll的情况
 9  6.loadveiw
10 */ 11 @implementation NJAppDelegate
12 13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 {
15 // 创建UIWindow 16 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
17 self.window.backgroundColor = [UIColor whiteColor];
18 19 /* 20  // 1.第一种方式:没有xib和storyboard
21  // (如果没有xib和storyboard, 会自动创建一个空白的view做为控制器的veiw)
22  NJViewController *vc = [[NJViewController alloc] init];
23 */ 24 25 /* 26  //2.通过 storyboard 创建
27  // 如果通过storyboard创建, 会创建箭头指向view做为控制器的veiw
28 29  // 如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
30  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
31  NJViewController *vc = [storyboard instantiateInitialViewController];
32 */ 33 34 /* 35  // 3.有指定xib情况下创建
36  // 如果通过xib, 会创建xib中描述的veiw做为控制器的veiw
37  NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
38 */ 39 40 /* 41  // 4.有同名xib情况
42  // 如果有同名的xib, 会自动找到同名xib中描述的view做为控制器的veiw
43  NJViewController *vc = [[NJViewController alloc] init];
44 */ 45 46 /* 47  // 5.有同名去掉Controller的 xib情况
48  // 如果有有同名去掉Controller的xib, 会自动找到该xib的view做为控制器的view
49  NJViewController *vc = [[NJViewController alloc] init];
50 */ 51 52 // 6.重写控制器的loadveiw方法
53 // 如果重写了控制器的loadview方法, 就不会去加载创建同名去掉controller的xib和同名的xib, 而是创建一个空白的veiw做为控制器的veiw 54 NJViewController *vc = [[NJViewController alloc] init];
55 56 // 设置控制器为window的根控制器 57 self.window.rootViewController = vc;
58 // 显示window 59  [self.window makeKeyAndVisible];
60 61 return YES;
62 }


六种方式:

1.没有同名xib情况下
2.通过 storyboard 创建
3.有指定xib情况下创建
4.有同名xib情况
5.有同名去掉controll的情况
6.loadveiw

二、创建控制器View的优先级


苹果官方文档示意图:


三、控制器View的延迟加载

说明:

控制器的view是延迟加载的:用到时再加载

可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载

控制器的view加载完毕就会调用viewDidLoad方法

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 2 {
 3 // 1.创建UIWindow  4 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 5 self.window.backgroundColor = [UIColor whiteColor];
 6  7  8 // 2.创建控制器  9 NJViewController *vc = [[NJViewController alloc] init];
10 11 // 其实是两步操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色 12 vc.view.backgroundColor = [UIColor purpleColor];
13 14 // 3.设置控制器为window的根控制器 15 self.window.rootViewController = vc;
16 17 // 4.显示window(在这一行才用到了控制器的veiw) 18  [self.window makeKeyAndVisible];
19 20 return YES;
21 }


主控制器文件中:

 1 #import "NJViewController.h"  2  3 @interface NJViewController ()
 4  5 @end  6  7 @implementation NJViewController
 8  9 // 当控制器需要显示控制器的view的时候就会调用loadView
10 // 可以在loadView方法中创建view给控制器
11 // 该方法一般用于自定义控制器的view 12 - (void)loadView
13 {
14 // 什么时候调用loadveiw就代表什么时候加载控制器的veiw 15 NSLog(@"loadView");
16 17 self.view = [[UIView alloc] init];
18 self.view.backgroundColor = [UIColor greenColor];
19 }
20 21 - (void)viewDidLoad
22 {
23  [super viewDidLoad];
24 NSLog(@"viewDidLoad");
25 }
26 @end

时间: 2024-09-27 12:05:47

iOS开发UI篇—控制器的View的创建的相关文章

iOS开发UI篇—使用picker View控件完成一个简单的选餐应用

一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) 3.实现数据源里面的两个方法 1)返回一共有多少列 2)在这一列中一共有多少行 4.通过代理告诉它那一列的哪一行显示哪些数据(设置其代理为控制器) 5.使用懒加载,加载所有的食物 6.完成基本数据的展示(列,行,内容) 7.自动更新选中的食物信息.(使用一个大的view,上面放6个labe

iOS开发UI篇—popoverController使用注意

iOS开发UI篇-popoverController使用注意 iOS开发UI篇-popoverController使用注意 一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewController alloc]init]; 3 4 //2.新建一个popoverController,并设置其内容控制器 5 self.popover=[[UIPopoverCo

iOS开发UI篇—UITableviewcell的性能优化和缓存机制

iOS开发UI篇-UITableviewcell的性能问题 一.UITableviewcell的一些介绍 UITableView的每一行都是一个UITableViewCell,通过dataSource的 tableView:cellForRowAtIndexPath:方法来初始化每⼀行 UITableViewCell内部有个默认的子视图:contentView,contentView是UITableViewCell所显示内容的父视图,可显示一些辅助指示视图 辅助指示视图的作⽤是显示一个表示动作的

iOS开发UI篇:APP主流UI框架结构

一.简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果: 开发UI篇:APP主流UI框架结构-"> 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导航控制器,那么就把系统的给删掉,拖一个导航控制器进来,导航控制器中默认的第一个子控制器是一个tableview controller,这里不需要,把它删掉,重新拖三个View Controller到界面上进行连线,简单的设置就可以了. 按钮连线,按住ctrl,右边界面选择push. 完成基本设置后的

IOS开发UI篇—导航控制器属性和基本使用

一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController *nav=[[UINavigationControlleralloc]init]; 2.设置导航控制器为window的根视图 self.window.rootViewController=nav; 3.添加 YYOneViewController *one = [[YYOneViewController alloc] init]; [nav

iOS开发UI篇—UIWindow简单介绍

一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow.也就说,没有UIWindow,就看不见任何UI界面 补充:UIWindow是创建的第一个视图控件(创建的第一个对象是UIapplication)如下图:

iOS开发UI篇—xib的简单使用实例_IOS

这个博客申请了有一段时间了,觉得好像是该写点什么了.这篇文章主要是关于一些xib的简单的用法,希望可以帮助到刚刚使用xib的新手们. 什么是xib? xib能做什么? 用来描述软件界面的文件. 如果没有xib,所有的界面都需要通过代码来手动创建. 有了xib以后,可以在xib中进行可视化开发,然后加载xib文件的时候,系统自动生成对应的代码来创建界面. 与xib类似的还有storyboard文件.xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面.都用Int

iOS开发UI篇—Quartz2D简单介绍

一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 二.Quartz2D在iOS开发中的价值 为了便于搭建美观的UI界面,iOS提供了UIKit框架,⾥⾯有各种各样的UI控件 UILabel:显⽰文字 UIImageView:显示图片 UIButton:同时显示图片和⽂字(能点击) 利⽤UIKi