视图篇——前言
一直想写一部关于 ios 视图、控制器、框架的系列文章。直到我阅读了Programming iOS 8 这本书之后才下了这个决定。作为笔记也好,作为翻译也罢,坚持才是最难为可贵。CSDN博客 目前访问量突破11000大关,我很惊讶,对于一个初出茅庐的swift green,这无疑是一种肯定,在高兴之余,我也在反思,前几天翻阅旧文章,无论从文笔还是条理,感觉自己都是一塌糊涂,或许这也是成长中必经之路吧。对于这个系列的文章我打算还是“专一地”在个站以及团队博客更新。希望大家支持
团队博客:Optional Swift
个人博客:Colourful Code
正文:
视图(view)是一块大蛋糕,在品尝美味之前,何不先来欣赏一番。
view作为对象,从属类 UIView 或者 UIView 的子类。
view很聪明,知道如何将自身绘制到屏幕中的一个矩形区域。
view创建方式有:拖拉控件、纯代码和两者结合。
view创建配置完毕,那么就忽略它吧。分享一句话“set it and forget it”。打个比方:作为初学者,往往都先接触 StoryBoard,拖拉控件来实现第一个 hello world app。拖拉一个 label 放入 view 中合适的位置;修改标签文字为 “hello world!” ;当程序运行时,标签出现在你设定的位置,一切看起来非常不错,你创建了它:拖拉控件到Storyboard中;你配置了它:修改标签名字;最后忘记了它,但是当程序运行时,它工作得很好!
view在运行过程中,你可以实时的改变它。
view是一个响应者(responder),因为 UIView 是 UIResponder 的子类。这意味着,view 能够对用户的操作做出回应,比如点击、滑动、长按等等。如此,view 作为界面不仅能呈现画面,同时也允许用户触碰来交互。
讲完view的特性,提及一下视图层级(view hierarchy)这一概念,它是视图组织中一个重要模式,至关重要!简要给出几个观点:
一个view 可以有多个子视图(subview)
一个subview 有且只有一个父视图(superview)
如上所述,那么就存在一个关于视图的树结构(tree of views)。
如果某个 view 从视图树中移除,那么它的所有子视图也同时被移除掉。
如果某个 view 设置了隐藏,那么它的所有子视图也同时隐藏。
如果某个 view 移动了位置,那么它的所有子视图也随着父视图而移动。其他行为类似!
总结:我们可以选择 storyboard 来创建视图,也可以通过代码方式来创建。这完全取决于你的需求和你整个应用程序的架构!