IOS Intro - UIWindow UIView and CALayer
UIWindow、UIView以及CALayer之间的关系
2016-05-11 20:46 本站整理 浏览(16)
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。
最新文章
- android shortcut &;livefoulder
- codeforces 748E Santa Claus and Tangerines
- C#中使用Linq实现全外连接
- mongodb(Index)
- JavaScript中with语句的理解
- Extjs4.2.1中的helloworld
- Oracle中遍历Ref Cursor示例
- WebMethod 属性
- Java内存泄漏分析与解决方案
- SSRS(rdl报表)分页显示表头和冻结表头
- Listview 多个ViewHolder实现
- Dark的项链(树链剖分)
- 在QLabel上同时显示文字和图片的方法
- Visual Studio 开发工具常用的插件
- jqery autocomplete 动态传递参数的问题
- 深度学习之自编码器AutoEncoder
- 跟随我在oracle学习php(10)
- MHA(下)
- CentOS上升级gcc编译器使支持C++11
- 函数func_splitString:将字符串按指定方式分割,获取指定位置的数