【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记11 View视图

简介: 一个view(视图)是IOS中UIView的子类,标示了屏幕上的一个长方形区域,定义了一个坐标系空间来绘图,并且处理触摸的操作。

一个view(视图)是IOS中UIView的子类,标示了屏幕上的一个长方形区域,定义了一个坐标系空间来绘图,并且处理触摸的操作。


view是有层次的,一个view只能有一个superview,但是可以有多个subview。你可以获取一个view,当然返回值是可选的,或者获取一个view的所有subview,返回值是一个数组,虽然这个数组中的元素其实是AnyObject,因为一些历史遗留原因,不过没关系它里面的内容百分百是UIView,你不会获取到别的东西。

另外还有一个东西叫做UIWindow,它是UIView的子类,但是在IOS开发中你不需要关心,在每一个设备的屏幕上都会有一个UIWindow,它在最高层,但你不会向他发送任何消息,你也不跟它交互,你只需要关心UIView就行。


views的层次结构通常不需要使用代码,你可以直接从storyboard中拖拽叠放。你也可以通过代码来创建,有两个方法可以实现,一个是addSubview,另一个是removeFromSuperview。addSubview向预期的superview发送消息,而removeFromSuperview向你需要移除的superView发送消息。

那么view层次结构的顶点或者说是根在哪呢,由于某些历史遗留问题,viewcontroller中有一个属性的名字叫做view,这就是你们在storyboard场景中的最高层次的view。


接下来讲解一下如何初始化一个view。通常的建议是尽可能不要做一个初始化。UIView有两种构造器,代表了两种不同的构造方法。如果你写init(frame:CGRect),参数frame代表父视图中的frame,它是一个坐标系,代表将视图放到这个坐标系中。另一个是使用coder的方式进行初始化,如果你使用storyboard拖拽生成一个视图,那么这个视图是使用init(coder:NSCoder)的方式实现的。

如果要自己的做初始化,推荐的做法是同时实现两个初始化方法,第一个是一个designed的初始化方法,一旦你重写了它你就不能再继承其他designed的初始化方法了。另外还有一个required的初始化方法。然后把需要做的操作写到一个方法中在构造器中调用。这样的做法当且仅当你不得不自己写一个构造器的时候才用到。还有一个初始化的方法就是awakeFromNib如下:


如果你需要在视图展示之前就要操作某些东西的时候使用这个方法,但是只有storyboard中的视图才会调用这个方法.接下来会讲解一下如何在视图中绘制和捕捉用户手势。


目录
相关文章
|
iOS开发
ios贝塞尔曲线表格视图
x轴和y轴都是可自定义,曲线的值也是对应的值
88 0
ios贝塞尔曲线表格视图
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
137 0
|
前端开发 小程序 数据处理
iOS上传图片视图的封装:用法 【下篇】
iOS上传图片视图的封装:用法 【下篇】
248 0
iOS上传图片视图的封装:用法 【下篇】
|
前端开发 API 数据处理
iOS小知识:封装上传图片视图(支持删除和添加)
iOS小知识:封装上传图片视图(支持删除和添加)
227 0
iOS小知识:封装上传图片视图(支持删除和添加)
|
安全 iOS开发
iOS 筛选视图的隐藏方案
iOS 筛选视图的隐藏方案
160 0
iOS 筛选视图的隐藏方案
|
监控 iOS开发
iOS视图置顶方案
iOS视图置顶方案
159 0
iOS视图置顶方案
|
API 开发工具 iOS开发
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
203 0
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
|
开发工具 iOS开发 git
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
153 0
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
|
iOS开发
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
469 0
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
|
iOS开发
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)
239 0
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)