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。

IOS Intro - UIWindow UIView and CALayer的更多相关文章

  1. iOS 杂笔-20(UIView和CALayer的区别与联系)

    iOS 杂笔-20(UIView和CALayer的区别与联系) 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提 ...

  2. iOS:UIView的CALayer基本演练

    UIView的CALayer基本演练的属性和注意事项: 在UIView中创建一个按钮UIButton,然后设置UIButton的Layer属性 –圆角.边框.阴影及3D形变属性 注意: 1.在UIVi ...

  3. iOS 中 UIView 和 CALayer 的关系

    UIView 有一个名叫 layer ,类型为 CALayer 的对象属性,它们的行为很相似,主要区别在于:CALayer 继承自 NSObject ,不能够响应事件. 这是因为 UIView 除了负 ...

  4. UIView与CALayer 区别

    在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个 ...

  5. UIView和CALayer的区别

    CALayer属于Core Animation部分的内容,比较重要而不太好理解.以下是园子中看到的一篇文章的摘录: 以下摘自<<核心动画编程指南>>: 两者最大的区别是,图层不 ...

  6. [iOS UI进阶 - 6.0] CALayer

    A.基本知识 1.需要掌握的 CALayer的基本属性 CALayer和UIView的关系 position和anchorPoint的作用   2.概念 在iOS中,你能看得见摸得着的东西基本上都是U ...

  7. UIView与CALayer的区别,很详细

    研 究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人, ...

  8. 【好程序员笔记分享】——UIView与CALayer详解

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...

  9. 在iOS中获取UIView的所有层级结构 相关

    在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便 ...

随机推荐

  1. 安装postman工具模拟请求

    扩展工具->: 注意,在创建快捷方式后,第一次打开这个工具,会让你注册信息,忽略它.关闭,重新打开postman工具,然后如下所示:

  2. [译]Javasctipt中的substring

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  3. C++中四种强制类型转换区别详解

    C++即支持C风格的类型转换,又有自己风格的类型转换.C风格的转换格式很简单,但是有不少缺点的: 1.转换太过随意,可以在任意类型之间转换.你可以把一个指向const对象的指针转换成指向非const对 ...

  4. Spring MVC 简介

  5. iOS组件化方案

    一.蘑菇街url-block方案 这是蘑菇街中应用的一种页面间调用的方式,通过在启动时注册组件提供的服务,把调用组件使用的url和组件提供的服务block对应起来,保存到内存中.在使用组件的服务时,通 ...

  6. Insus Paging Utility Version 2

    Insus.NET对GridView或是DataList分页,都是使用自己的分页组件:http://www.cnblogs.com/insus/archive/2009/03/19/1417102.h ...

  7. windows下启动Apache报443错误!

    windows下启动apache报make_sock: could not bind to address [::]:443错误! 查看指定端口的占用情况 netstat -aon|findstr & ...

  8. 温故而知新_C语言_define_宏

                                                                                             define defi ...

  9. go语言实战教程之 后台管理页面统计功能开发(1)

    本节内容我们将学习开发实现后台管理平台页面统计功能开发的功能接口,本章节内容将涉及到多种请求路由的方式. 功能介绍 后台管理平台不仅是功能管理平台,同时还是数据管理平台.从数据管理平台角度来说,在管理 ...

  10. iOS自定义相机

    1.首先声明以下对象 #import <AVFoundation/AVFoundation.h> //捕获设备,通常是前置摄像头,后置摄像头,麦克风(音频输入) @property (no ...