iOS5 之 Storyboard (Storyboarding) 用法

from:http://leopard168.blog.163.com/blog/static/1684718442011111713711529/

Storyboard 有时也称为 Storyboarding,二者经常混用。 如果你的英文足够好,也许能体会到二者的细微差别。

在谈及Storyboard之前,我们先来了解下 Interface builder 的背景。 Interface Builder 简称 IB,是XCode开发环境自带的 用户图形界面设计工具, 通过它,你可以随心所欲地将 控件或对象(Object)拖拽到 视图中。 这些控件被存储在一个 XIB (发音为 zib)或NIB 文件中。XIB很容易理解, 说白了, XIB文件就是一个 XML 格式的文件, 你可以通过编辑工具打开改写这个Xib 文件。当程序编译时, 这些视图控件被编译成一个NIB 文件。

我们先来对NIB有一个基本的认识。通常,NIB是与ViewController相关联的,很多ViewController都有对应的NIB文件。NIB文件的作用是描述用户界面、初始化界面元素对象。 其实,开发者在NIB中所描述的界面和初始化的对象 都能够在代码中实现。之所以用Interface Builder 来绘制页面,是为了减少那些设置界面属性的重复而枯燥的代码,让开发者能够集中在功能的实现上。

在XCode4.2之前,每创建一个视图,就要生成一个相应的XIB 文件。 当一个应用有多个视图时,视图之间的跳转管理将变得十分复杂。 为解决这个问题, Apple 推出的 Storyboard可谓及时而实用。 看看Apple对Storyboard的评论吧:

"Discover how Xcode's Interface Builder support for Storyboarding in iOS 5 makes designing your iOS apps so much easier. Storyboarding allows you to graphically arrange all your views within a single design canvas, where you can then define the app's logical flow, and even assign transition animations."

NIB文件无法描述从一个ViewController到另一个ViewController的跳转,这种跳转只能靠手写代码来实现。相信很多人都会经常用到-presentModalViewController:animated: 以及 -pushViewController:animated: 这两个方法。 Storyboarding 的出现,使得这种方式成为历史,取而代之的是 Segue [Segwei]。 Segue 定义了从一个ViewController 到另一个ViewController的跳转。我们在 IB 中,已熟悉如何连接见面元素对象和方法 (Action Method)。 在Stroyboard中,我们完全可以通过Segue,将ViewController 连接起来,而不再需要手写代码了。如果你想自定义 Segue,你也只需写 Segue 的实现,而无需编写调用的代码, Storyboard 会自动调用。

要用好Storyboard机制,必须严格遵守MVC原则。 View 与 Controller 需完全解耦,并且不同的Controller 之间也要充分解耦。

在开发iOS 应用程序时,创建一个视图(View),有两种实现方法, 一是在Interface Builder 中,拖拽一个UIView控件, 另一种方法是通过原生代码方式。两种方法各有利弊。 IB 方式看似简单,但在View 之间跳转时,不便操控; 而原生代码(这种纯手写代码)方式,代码工作量巨大。 哪怕仅仅创建几个Label,就得手写上百行代码,每个Label 都得设置坐标。 为解决以上问题,Apple 近期发布的 iOS5 新增 Storyboard 功能。

Storyboard 是什么东东? 简单来说,Storyboard是Xcode 4.2 自带的工具, 主要用于iOS5 以上版本。 早期的InterfaceBuilder 所创建的 View , 各个View之间是互相独立的,没有相互关联,当一个应用程序有多个View 时, View 之间的跳转很是复杂。为此Apple 为开发者带来了福音—Storyboard。尤其是使用导航栏和标签栏的应用, Storyboard 大大简化了各个视图之间的切换, 并由此简化了管理视图控制器的开发过程,我们完全可以指定视图的切换顺序,而不用手工编写代码。

Storyboard 能够包含一个程序的所有的ViewController 以及它们之间的连接。在应用开发时,可将UI Flow作为Storyboard 的输入,一个看似完整的UI在Storyboard唾手可得。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值