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。
IOS Intro - UIWindow UIView and CALayer的更多相关文章
- iOS 杂笔-20(UIView和CALayer的区别与联系)
iOS 杂笔-20(UIView和CALayer的区别与联系) 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提 ...
- iOS:UIView的CALayer基本演练
UIView的CALayer基本演练的属性和注意事项: 在UIView中创建一个按钮UIButton,然后设置UIButton的Layer属性 –圆角.边框.阴影及3D形变属性 注意: 1.在UIVi ...
- iOS 中 UIView 和 CALayer 的关系
UIView 有一个名叫 layer ,类型为 CALayer 的对象属性,它们的行为很相似,主要区别在于:CALayer 继承自 NSObject ,不能够响应事件. 这是因为 UIView 除了负 ...
- UIView与CALayer 区别
在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个 ...
- UIView和CALayer的区别
CALayer属于Core Animation部分的内容,比较重要而不太好理解.以下是园子中看到的一篇文章的摘录: 以下摘自<<核心动画编程指南>>: 两者最大的区别是,图层不 ...
- [iOS UI进阶 - 6.0] CALayer
A.基本知识 1.需要掌握的 CALayer的基本属性 CALayer和UIView的关系 position和anchorPoint的作用 2.概念 在iOS中,你能看得见摸得着的东西基本上都是U ...
- UIView与CALayer的区别,很详细
研 究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人, ...
- 【好程序员笔记分享】——UIView与CALayer详解
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...
- 在iOS中获取UIView的所有层级结构 相关
在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便 ...
随机推荐
- java线程安全的元素
集合类: Vector Stack HashTable enumeration 字符串: StringBuffer
- spring项目中监听器作用-ContextLoaderListener
附加链接:http://blog.csdn.net/zjw10wei321/article/details/40145241 作用:在启动Web 容器时,自动装配Spring applicationC ...
- excel导出工具
介绍 excel导出工具 整个项目的代码结构如下 com \---utils +---demo # 案例相关 | | ExcelExportApplication.java # springboot启 ...
- Nginx——1.基础知识
Nginx——1.基础知识 作为高速.轻量.高性能等优点集于一身的服务器,Nginx在近些年迅速发展并不断扩大市场份额,甚至在最近其市场份额一举超过微软的IIS,跃身到第二位,仅次于Apache. 但 ...
- [翻译]CURAND Libaray--Host API--(2)
Translated by xingoo 如果有错误请联系:xinghl90@gmail.com 2.3 返回值 所有的CURAND host端的函数返回值都是curandStatus_t.如果调用没 ...
- phantomjs截图中文网站网页页面乱码,安装字体解决
用phantomjs去截取中文页面的网站可能会出现乱码的情况,也就是截图中中文的位置全是方框. 解决办法就是安装字体. 在centos中执行:yum install bitmap-fonts bitm ...
- luogu3312 [SDOI2014]数表 (莫比乌斯反演+树状数组)
link \(\sum_{i=1}^n\sum_{j=1}^m[s(\gcd(i,j))\le a]s(\gcd(i,j))\) \(=\sum_{p=1}^ns(p)[s(p)\le a]\sum_ ...
- boost库checked_delete的使用
在查看boost库时发现一个小文件checked_delete.hpp里面几个小函数,它的作用用很简短的话来说:防止未定义的行为造成delete时的内存泄露.实现如下: template<cla ...
- deque时间复杂度和vector,list比较
deque supports const time insert and erase operations at the beginning or the end, insert or erase i ...
- 各种Helper代码
1.读取XML文件 /// <summary> /// 读取XML配置文件类 /// </summary> public class XmlHelper { private s ...