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设计器中的工作就会变得庞大而复杂,除此之外整个工程的性能也会 受到一定影响。

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

  1. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目 ...

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

    故事板实现标签导航 用故事板技术实现标签导航模式. 使用"Tabbed Application"模版,创建一个名为 "TabNavigationStoryborad&qu ...

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

    基于故事板的HelloWorld工程 Storyboard(故事板)是用来替代xib的技术,也是iOS 5最重要的新特性之一.我们用Storyboard(故事板)重构HelloWorld. 使用故事板 ...

  4. iOS 开发可视化编程之Xib 简述

    iOS应用是非常注重用户体验的,在某些方面上应用的成功与否于UI界面是否漂亮,以及应用交互设计上有着非常重要的关系 随着iOS开发发展至今,在UI制作上大概分为三个流派: 1.使用代码手写UI和布局 ...

  5. iOS开发那些事--iOS6 UI状态保持和恢复

    iOS设计规范中要求,当应用退出的时候(包括被终止运行时候),画面中UI元素状态需要保持的,当再次进来的时候看状态与退出是一样的.iOS6之后苹果提供以下API使得UI状态保持和恢复变得很容易了. 在 ...

  6. iOS开发那些事-iOS常用设计模式–委托模式案例实现

    书接上回,应用案例 我们以UITextFieldDelegate为例来说明一下委托的使用. UITextFieldDelegate是控件UITextField的 委托,控件的委托主要负责响应控件事件或 ...

  7. iOS开发那些事-iOS应用本地化-资源文件本地化

    资源文件包括:图片文件.音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布.但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因 ...

  8. ios标签控制器怎么用_带故事板的iOS标签栏控制器

    ios标签控制器怎么用 In this tutorial we'll look into another type of view controller namely Tab Bar Controll ...

  9. 敏捷开发日常跟进系列之三:故事板,看板

    这是敏捷开发日常跟进系列的第三篇. (栏目目录) 故事板和看板其实不是一个东西,前者是最初的敏捷开发里边的东西,受到了后者的启发产生的:而后者是制造业的东西,具体内容请参考末尾的百度百科.但是在敏捷开 ...

  10. iOS开发那些事-Git在Xcode中的配置与使用

    很多Git命令都是在命令行下运行的,命令行下管理Git有很多优点不用多说.但最大的缺点是要求用户记住这些命令.因此Git图形界面还是很受一 些用户欢迎的,其中Xcode作为集成开发环境工具,也提供了一 ...

最新文章

  1. Linux学习(十三)---搭建JavaEE环境
  2. python3环境下“No module named nibabel”的解决办法
  3. python装饰器-Python——装饰器(Decorator)
  4. 解决git@osc每次提交需要输入用户名密码的问题
  5. BZOJ2816:[ZJOI2012]网络(LCT)
  6. 运用@media实现网页自适应中的几个关键分辨率
  7. ASA8.4policy-map接口和全局执行的优先级测试:
  8. SAP Spartacus 和 SmartEdit 集成的一些 bug
  9. 面试官 | 为什么用了索引之后,查询就会变快?
  10. 吃糖果(信息学奥赛一本通-T1193)
  11. 设置与菜单项关联的Activity
  12. spring3.1.0 jar包详解说明
  13. 写给父亲的语音计算器(‘(‘‘)‘算法参与运算c#,二)
  14. 一元享移动怎么样_移动新套餐:18元享“全免流”+1元1G流量,阿里鱼卡要遭殃?...
  15. 用好这 42 款 Chrome 插件,每年轻松省出一个年假
  16. 使用powershell Client进行有效dy
  17. C语言之:数组的定义和初始化必备练习题
  18. 如何躲避红蜘蛛的控制
  19. vue2.0_在vue中实现input输入框的模糊查询
  20. # 工欲善其事必先利其器,让你的idea“飞”起来

热门文章

  1. 深度学习框架PyTorch:入门与实践 学习(四)
  2. CS231n李飞飞计算机视觉 神经网络训练细节part1上
  3. 【POJ 1456】Supermarket【并查集】
  4. 均匀带电直线外一点的场强
  5. 使用Lettuce执行命令,应该有多个返回值却只取到一个。
  6. 简单记录 Part1.1
  7. 卡爆mysql_荐 MySQL死锁和卡死分析
  8. c++输入回车结束循环,C++ cin如何输入回车停止
  9. rbf java_RBF网络
  10. 杭州·云栖 2050 大会日程(5.25-5.27)