您的位置:首页 > 产品设计 > UI/UE

UIWindow、UIView以及CALayer之间的关系

2016-05-11 20:46 603 查看
UIWindow

1.简介

UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow。

2.作用

a.包含程序所有要显示的视图;

b.传递手势消息到其它的UIView对象或者其它对象;

c.与UIViewController一起处理屏幕旋转。

3.初始化

a.使用storyboard

如果为应用程序创建了一个storyboard,并在info.plist中将其指定为main storyboard,那么在应用程序启动的时,iOS会自动帮程序员做这样几件事情:

1).实例化一个window;

2).加载main storyboard,并且实例化其中的root view controller;

3).将这个view controller赋值给window.rootViewController,并显示这个window。

b.使用nib文件

如果使用nib文件的话。将一个window对象拖拽到Interface Builder文件中,并将其指定为应用程序的main interface。那么在app启动的时候,iOS也会自动创建window对象。但是为了确保window的大小与屏幕大小一致,需将Interface Builder中对window对象中的Full Screen at Launch这个属性勾选。

c.纯代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//创建window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//为window设置背景颜色
self.window.backgroundColor = [UIColor whiteColor];
//将该window设置成主视图并显示
[self.window makeKeyAndVisible];

return YES;
}


UIView

1.简介

UIView表示屏幕上的一块矩形区域,它几乎事IOS中所有可视化控件的父类。

2.作用

1).管理矩形区域里的内容;

2).处理矩形区域中的事件;

3).子视图的管理;

4).还能实现动画。

3.初始化

UIView *someView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:someView];


CALayer

1.简介

UIView之所以能显示在屏幕上,是因为它内部的一个图层,即CALayer对象。在创建UIView对象时,UIView内部会自动创建一个图层(CALayer对象),当UIView需要显示在屏幕上的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制到自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,这样完成UIView的显示。

2.作用

主要负责UIViewde的视图绘制。

UIWindow、UIView、CALayer三者的关系总结

UIView是用来显示内容的,可以进行处理用户事件。

CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。

UIwindow是UIView的子类,UIWindow的主要作用:一是提供一个区域来显示UIView,二是将事件的分发给UIView,一个应用基本上只会有一个UIWindow。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: