Storyboard全解析(1)
转自:http://www.iteye.com/topic/1122979
(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图:
现在,你就可以清楚的看到这个应用究竟是干些什么的,也可以清楚的看到其中的各种关系,这就是Storyboard的强大之处了。如果你要制作一个页面很多很复杂的App,Storyboard可以帮助你解决写很多重复的跳转方法的麻烦,节省很多时间,以便你能够完全的专注于核心功能的实现上。
开始
首先启动Xcode,新建一个工程,我们在这里使用Single View App Template,这个模板会提供一个类和一个Storyboard,免去我们自己创建的麻烦。
创建完成之后,Xcode的界面大概是这样的:
这个新的工程由两个类:AppDelegate和ViewController以及一个Storyboard组成(如果你选择了两个设备会有两个Storyboard),注意这个项目没有xib文件,让我们首先看看Storyboard是什么样的,双击Storyboard打开他:
Storyboard的样子和工作方式都和Interface Builder(以下简称为IB)像极了,你可以从左下方的控件库中拖动控件到你的View之中并且组织他们的排放顺序,唯一不同的地方就是,Storyboard不止是包含一个视图控件,而是所有的视图控件以及他们之间的关系。
Storyboard对一个视图的官方术语是一个场景,但是一个场景其实就是一个ViewController,在iPhone中一次只能够展示一个场景,而在iPad中一次可以展示多个场景,比如Mail应用程序。
通过尝试添加一些控件,你可以感受一下Storyboard的工作方式。
这个是数据显示器,显示所有场景及其控件的结构。
在IB中,这个位置显示的是你的NIB文件中的文件,而在Storyboard中这里显示的是ViewController,目前这里只有一个ViewController,我们接下来可能会增加一些。
这是一个文档管理器的缩小版,叫做dock。
Dock展示场景中第一级的控件,每个场景至少有一个ViewController和一个FirstReponder,但是也可以有其他的控件,Dock还用来简单的连接控件,如果你需要向ViewController传递一个关系时,只需要将其按住Ctrl键拖到ViewController上就可以了。
Note:你大概不会太长使用FirstResponder,因为它只是一个代理控件,代表着当前你所使用的控件。
现在运行这个应用,他会向我们设计的界面一样。
如果你以前制作过NIB型的应用的话,你也许回去寻找MainWindow.xib ,这个文件包括所有的ViewController,Appdelegate等等,但是在Storyboard中这个特性已经被废止了。
那么,没有这个文件,应用从那里起始呢?
![](http://dl.iteye.com/upload/attachment/0066/9799/b8e7f63f-5edb-36d7-ac3e-7926acd21ba0.png)
![](http://dl.iteye.com/upload/attachment/0066/9801/6f63b731-1435-3d66-b1fd-03b37f0a711d.png)
![](http://dl.iteye.com/upload/attachment/0066/9803/f7ecc9c7-9357-39b9-b954-ff9e87f22613.png)
![](http://dl.iteye.com/upload/attachment/0066/9807/539b3b98-57cc-3625-9dfa-202298e53add.png)
![](http://dl.iteye.com/upload/attachment/0066/9809/26fdcd96-64da-3bb7-a4bf-7013469bf9dd.png)
![](http://dl.iteye.com/upload/attachment/0066/9811/7c5bb9bb-42f4-30fb-be4d-a40e3aa6c9e7.png)
![](http://dl.iteye.com/upload/attachment/0066/9813/40615115-d0c1-3395-a063-d9fb6b77c889.png)
![](http://dl.iteye.com/upload/attachment/0066/9819/54a037d9-196c-37df-8fe2-aec1aa2b21cf.png)
![](http://dl.iteye.com/upload/attachment/0066/9821/f3b7e167-6d7b-316b-baf0-cc13565a2b15.png)