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

一个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中的视图才会调用这个方法.接下来会讲解一下如何在视图中绘制和捕捉用户手势。

时间: 04-11

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

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记37 TableView Delegate

上一话介绍了tableView的datasource,本话来介绍另一个重要的部分delegate. 当我们点击一个cell的时候,如何跳转到另外一个mvc中呢? 像增加其他segue一样,点击cell按住control键,右键连线到另一个mvc上,然后松手,选择需要的segue类型. 如果你的cell上还有其他按钮,比如detail disclosure,你也可以选择它的segue: 然后设置你的segue: 接着去prepareForSegue中设置这个segue: 每一个case对应不同的i

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC

继续上一话中的计算器Demo.上一话讲到类必须被初始化.类中的属性也必须被初始化,所以你不能仅仅声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么仅仅有声明而不须要初始化呢,这是由于它的类型依然是一个optional,在你初始化之前已经被赋值为nil了,这也就是为什么你不须要再初始化它的原因. @IBOutlet weak var display: UILabel! 然而既然它是一个optional类型的,那为什么UILabel后面是"!"而

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记39 Alert&ActionSheet

Alert和ActionSheet是IOS中弹出消息的两个工具. 首先它们都是Modal的方式展示的. Alert用来向用户发起询问,可以有一个(比如取消)或两个选项(比如确定和取消),也可以附带一个文本框(比如要求用户输入密码) Action Sheet从屏幕底部滑出,提供一些分支的选项,选项的数量可以大于两个. 对比如图: Action Sheet和Alert都可以使用UIAlertController来创建,比如创建一个Action Sheet,在构造器中制定它的title和简介,注意St

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记44 Popover Segue

在上一话中我们看了一个Demo,使用modal的方式,但其实如果要考虑到适配Iphone和Ipad设备的话,默认的modal会充满屏幕,而popover可以只占据屏幕上的一小块,之前我们讲过在Iphone中使用popover看起来和modal是一样的.实则不然,popover有很多设置在Iphone中也是生效的.修改上一话中的Demo. 首先为了突出效果我们把第一个场景的背景色加深,橙色好了,然后修改场景一中按钮点击到场景二的过渡方式,现在我们选择popover. 注意popover的属性观察器

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记41 Animation动画

IOS中的动画有以下几种: 第一种是为UIView的元素添加动画. 第二种是控制器的动画,比如之前介绍的导航控制器的用法. 第三种是Core Animation,这是一个很强大的框架,但是超出了这门课程的范围. 第四种是Dynamic Animation,这种动画基于设备的物理特性,比如晃动手机.调转方向等等. 本话来讲解第一种情况: 可以诸如frame.transform.和alpha这样的属性来实现动画效果. 可以调用UIView的方法来设置动画,这些方法的参数中有闭包可以帮助我们设置UIV

【我们都爱Paul Hearty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡

之前我们接触过了segue,这是IOS中最基本的传递方式,今天来讲解一下如何进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创造新的MVC的过渡方式,它有下面两个适用场景: 1很适合在navigationController的栈中使用进行跳转. 2关闭一个使用modal Segue生成的MVC. 和其他的segue不同,不需要拖拽连线,直接拖拽需要点击反向过渡的控件到场景顶部的小门形状的按钮,就可以在其中选择我们在目标MV

斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 斯坦福机器学习公开课差不多是网上能找到的最好的机器学习入门课程了.现在一共有20节课放到网络上,博主是在网易公开课学的,那里的视频有中文字幕然后课件也很全. (地址:http://v.163.com/special/opencourse/machinelearning.html) 主讲师Andrew Ng(已经被百度诏安了)是华裔科学家,看他的课特别有亲切感.感觉他们的课跟国内老师的课区别还是挺大的

斯坦福ML公开课笔记13B-因子分析模型及其EM求解

转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/37559995 本文是<斯坦福ML公开课笔记13A>的续篇.主要讲述针对混合高斯模型的问题所采取的简单解决方法,即对假设进行限制的简单方法,最后引出因子分析模型(Factor Analysis Model),包括因子分析模型的介绍.EM求解等. 斯坦福ML公开课笔记13B-因子分析模型及其EM求解,布布扣,bubuko.com

斯坦福机器学习公开课---1.机器学习简单介绍

斯坦福机器学习公开课---1. 机器学习简单介绍 1.1  介绍 机器学习流行原因--- 1)      由人工智能AI发展来的一个领域 2)      是计算机需要开发的一项新的能力,涉及工业和基础学科中的很多内容. 应用学习算法,如设计自主机器人,计算生物学和其他被机器学习影响的领域. 1.2  机器学习应用 1)        数据挖掘 网站点击流数据.电子医疗记录.计算生物学和工程学. 2)        无法手动进行编程的领域 自动直升机.手写体识别.自然语言处理NLP和计算机视觉.

斯坦福大学公开课:iOS 7应用开发 笔记

2015-07-06 第一讲   课务.iOS概述 -------------------------------------------------- 开始学习斯坦福大学公开课:iOS 7应用开发留下笔记