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。

最新文章

  1. android shortcut &livefoulder
  2. codeforces 748E Santa Claus and Tangerines
  3. C#中使用Linq实现全外连接
  4. mongodb(Index)
  5. JavaScript中with语句的理解
  6. Extjs4.2.1中的helloworld
  7. Oracle中遍历Ref Cursor示例
  8. WebMethod 属性
  9. Java内存泄漏分析与解决方案
  10. SSRS(rdl报表)分页显示表头和冻结表头
  11. Listview 多个ViewHolder实现
  12. Dark的项链(树链剖分)
  13. 在QLabel上同时显示文字和图片的方法
  14. Visual Studio 开发工具常用的插件
  15. jqery autocomplete 动态传递参数的问题
  16. 深度学习之自编码器AutoEncoder
  17. 跟随我在oracle学习php(10)
  18. MHA(下)
  19. CentOS上升级gcc编译器使支持C++11
  20. 函数func_splitString:将字符串按指定方式分割,获取指定位置的数

热门文章

  1. [译]Javascript中的Ternary operator
  2. Linux下遇到的操作 (持续更新……)
  3. 【2】循序渐进学 Zabbix:安装配置 Zabbix Server 服务端
  4. UINavigationController + UIScrollView组合,视图尺寸的设置探秘(一)
  5. 微信网页授权操作逻辑封装-C#实例
  6. jdk 1.6.0_43 下载
  7. linux1--常用命令
  8. 7 . 动态sql-choose
  9. spring-redis 存储数据
  10. HTML用JS导出Excel的五种方法