关键字: IOS XCode4 StoryBoard
最近正在学习IOS方面的开发,在XCode4的时候,看到它的StoryBoard,因为大部分的入手教程都只是教你怎么用这个StoryBoard,而从来没有人跟你说这个StoryBoard是怎么一回事,所以产生了对它做一个小研究的兴趣。
本人Windows 开发人员出身,凭直觉上看,这个StoryBoard会跟.rc应该很相似,最终的结果也印证了这个猜想。
首先我们看看这个StoryBoard是个什么东西。
一,StoryBoard起源:
StoryBoard源于动画电影的制作,相关知识参考:http://zh.wikipedia.org/wiki/%E5%88%86%E9%8F%A1
XCode4 引入这个概念,个人的看法上,是想引导开发人员应用场景的概念去做APP的开发。因为移动APP的特质是一屏一屏地切换,所以引入这个概念,使得整个开发比较有条理。
从我对于这么多年的开发模式的理解,这样的模式是有其可取之处的,但是要注意对User Case及整体架构的控制。后面有时间的时候可以写写有关开发模式方面的心得。
二,StoryBoard里面有什么
首先,StoryBoard是一个XML文件,StoryBoard里面包括Control/Scene/Segue的定义及关联关系的定义。
其次,从Windows开发人员的角度去看,它很像一个.rc,我们可以分段来看它里面有什么:
sceneID
<scene sceneID="5">
定义 view control
<viewController id="2" customClass="ViewController" sceneMemberID="viewController">
控件及ID,属性
<slider opaque="NO" contentMode="scaleToFill" ... id="Tdd-jy-JnD">
<rect key="frame" x="-2" y="-1" width="274" height="23"/><connections>
<action selector="changeLabelText::" destination="2" eventType="valueChanged" id="4Vj-jl-krg"/>
</connections>
</slider>
Segue ID
<segue destination="tKu-jX-Erg" kind="modal" id="uUh-na-oT5"/>
Outlet
<connections> //outlet的连接点
<outlet property="slider_main" destination="Tdd-jy-JnD" id="IW8-aT-36m"/>
<outlet property="titleLabel" destination="RdM-sN-1c8" id="ru7-4k-XUx"/>
</connections>
class&outlet
<class className="ViewController" superclassName="UIViewController"><source key="sourceIdentifier" type="project" relativePath="./Classes/ViewController.h"/>
<relationships>
<relationship kind="action" name="changeLabelText:"/>
<relationship kind="outlet" name="slider_empty" candidateClass="UISlider"/>
<relationship kind="outlet" name="slider_main" candidateClass="UISlider"/>
<relationship kind="outlet" name="titleLabel" candidateClass="UILabel"/>
</relationships>
</class>
内容其实也很简单易懂,就是一个简单的定义文件,如果还有不明白,参考:
https://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS5.html#//apple_ref/doc/uid/TP30915195-SW1