iOS开发那些事--nib、xib与故事板的关系

nib、xib与故事板

如果大家使用过苹果的官方资料,一定会发现某些资料上会提到nib文件,那么nib与xib是怎样的一种关系呢?

最初只有nib文件,后来将其更名为xib,但大家一直沿袭nib这个叫法(即称xib文件为nib文件),所以目前为止,nib等同于xib。xib文件采用xml格式。

前文已提到故事板是用来替代xib的,那么两者除后缀名外,还存在哪些差异呢?

首先,在数量上,使用故事板技术时,一个工程只有一个故事板文件。当使用xib技术时,xib在数量上与视图控制器相对应,而一个工程可能会有很多视图控制器,相应地就会有很多xib文件。

其次,故事板与视图的关系可以在IB设计器中很明显地体现,而xib与视图的关系则需要查看相关代码或利用其他资源。下面我们来举例说明。

我们要做这样一个应用:两个不同的画面,有两个标签分别与其对应,点击标签两个画面实现互相切换,该应用采用标签栏导航模式,设计原型草图见图

选择Tabbed Application模板,分别采用xib和故事板文件实现

    

可以看到采用xib技术的时候两个画面有两个xib文件,而采用故事板时候两个画面只有一个MainStoryboard.storyboard文件

打开MainStoryboard.storyboard文件。

应用包含两个视图,两个视图存在切换关系,这些信息从上图中一目了然。事实上故事板是多个xib文件集合的描述文件,也采用xml格式。

需要特别提出的是,虽然苹果官方主张使用故事板,但最正确的做法是我们要根据具体情况、具体问题对故事板和xib做以取舍,而不是一概而论。当应用数据量很大、画面很多、关系很复杂的时候,如果使用storyboad技术,那我们在IB设计器中的工作就会变得庞大而复杂,除此之外整个工程的性能也会受到一定影响。

时间: 2024-08-01 22:26:18

iOS开发那些事--nib、xib与故事板的关系的相关文章

iOS开发入门:nib、xib与故事板的关系

nib.xib与故事板 如果大家使用过苹果的官方资料,一定会发现某些资料上会提到nib文件,那么nib与xib是怎样的一种关系呢? 最初只有nib文件,后来将其更名为xib,但大家一直沿袭nib这个叫法(即称xib文件为nib文件),所以目前为止,nib等同于xib.xib文件采用xml格式. 前文已提到故事板是用来替代xib的,那么两者除后缀名外,还存在哪些差异呢? 首先,在数量上,使用故事板技术时,一个工程只有一个故事板文件.当使用xib技术时,xib在数量上与视图控制器相对应,而一个工程可

iOS开发那些事-nib实现标签导航

nib实现标签导航 在目前的Xcode(4.5)版本创建标签导航的应用可以使用工程模板 Tabbed Application.我们可以选择故事板或nib技术实现.故事板创建固然简单,但这种实现方式屏蔽了标签导航很多技术细节,为了更有益于我们学习, 在实现环节我们分别采用了nib技术和storyboard技术.首先我们来看看用nib技术实现的过程. 使用"Tabbed Application"模版创建一个名为 "TabNavigationNib"的工程.注意不要勾选&

iOS开发那些事--简单表视图

表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录.频道列表等.表视图分段.分组.索引等功能使我们所展示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言. 不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当值得的. 简单表视图 表视图的形式灵活多变,本着由浅入深的原则,我们先从简单表视图开始学习.本节讲的简单表视图是动态表,(iOS 5之前全部是

iOS开发那些事-iOS网络编程同步GET方法请求编程

iOS SDK为HTTP请求提供了同步和异步请求两种不同的API,而且可以使用GET或POST等请求方法.我们先了解其中最为简单的同步GET方法请求. 为了学习这些API的使用MyNotes"备忘录"应用实例,数据来源于服务器端,而不是本地的Notes.xml(或Notes.json)文件. 首先实现查询业务,查询业务请求可以在主视图控制器MasterViewController类中实现,其中MasterViewController.h代码如下: #import <UIKit/U

iOS开发那些事-关于性能优化–选择nib还是故事板的讨论

故事板是苹果在iOS5之后推出的技术,本意是集成多个nib文件于一个故事板文件,管理起来方便,故事板还能反应控制器之间的导航关系,很多导航是需要连连线就可以了,不需写代码,使用起来很方便.但是我告诫读者,从内存占用角度看故事板不是一个好的技术. 为了比较我们使用Xcode中的Master-Detail模板分别创建,基于故事板的应用StoryboardDemo和基于nib的应用NibDemo.然后通过Instruments工具的Allocations模板分析ViewController视图控制器加

iOS开发那些事-故事板实现标签导航

故事板实现标签导航 用故事板技术实现标签导航模式. 使用"Tabbed Application"模版,创建一个名为 "TabNavigationStoryborad"的工程.勾选"Use Storyborads"."Use Automatic Reference Counting".创建完成之后打开MainStoryboard.storyboard. 三个Controller Scene 会有由一些线连接起来,这些线就是Seg

iOS开发那些事--创建基于故事板的iOS 6的HelloWorld

基于故事板的HelloWorld工程 Storyboard(故事板)是用来替代xib的技术,也是iOS 5最重要的新特性之一.我们用Storyboard(故事板)重构HelloWorld. 使用故事板重构HelloWorld 勾选"Use Storyboards"项. 工程创建完成之后,通过导航进入MainStoryboard.storyboard   添加Label控件

iOS开发那些事-构建自适应iPhone和iPad工程

有的时候应用需要能够在iPhone和iPad上运行,当然我们可以选择做两个完全不同的工程,然后共用一些类,但是我们也可以只创建一个工程,然后编译生成一个产品,这个产品能够自适应iPhone和iPad设备,然后在App Stroe发布的时候,它会有两套不同的截图展示给用户.App Store上的Evernote应用,它有两套截图iPhone和iPad,这说明Evernote就是自适应iPhone和iPad设备的. 我们来做一个名为UniversalSample的自适应iPhone和iPad设备的工

iOS开发那些事-iOS应用本地化-文本信息本地化

文本信息本地化在本地化工作中占有很大的比例.包括了:应用名称本地化.系统按钮和信息本地化,以及静态文本信息本地化. 系统按钮和信息本地化 还记得天气预报应用背后的"完成"按钮吗,它在中文环境下是"完成",在英语环境下是"Done". 还有一些系统给我们的提示信息,连接蓝牙设备时的系统提示.它在中文环境下是中文提示,在英语环境下是英文提示. 系统按钮上的文本和系统提示信息的文字我们都是不能修改的,但是如果我们不进行本地化的设置,即便是这些基本信息也