xib和Storyboard (引用)

XIB

2016年04月25日⁄iOS开发经验⁄ 共 3625字 ⁄ 字号⁄评论关闭

XIB

Storyboard 和 xib

1.1 Storyboard故事板 Storyboard的是 ios5 的新特征 目的是代替历史悠久的xib.Storyboard 是多个xib文件集合的描述文件,也采用xml格式.如果要使用Storyboard特性,那么AppDelegate必须继承自UIResponder类, 之前则是继承自NSObject类的,而且必须有一个不是UIOutlet类的Window属性声明才可以

>> 注意点: 当我们需要更换Stoard 我们需要把infor.plist Main interface 里的东西 删除 否则会报错

>>优点 : stroryboard 可以帮助我们解决很多重复的跳转方法 可以节省很多时间.代码量少 开发周期短.可以看到每个ViewController的布局样式 也可以明确地知道各个ViewController的跳转关系

>>缺点 :团队开发不便

1.2 storyboard 的使用

// 1.创建窗口

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

// 2.创建控制器[storyboard故事板]

// 2.1 先加载故事板文件

UIStoryboard *boss = [UIStoryboard storyboardWithName:@"CZBoss" bundle:nil];

// 2.2 实例化初始化控制器[带箭头]

//UIViewController *vc = [boss instantiateInitialViewController];

//根据表示符,实例化控制器

UIViewController *vc = [boss instantiateViewControllerWithIdentifier:@"blue"];

// 3.设置窗口的根控制器

self.window.rootViewController = vc;

// 4.把窗口作为主窗口并可见

[self.window makeKeyAndVisible];

2 Xib

> >Xcode.3.0 之前 Interface Build 创建的文件是二进制nib nib代表Next interface Builder 因为nib是二进制不好管理 也不方便版本控制  xcode.3.0 之后 interface builder 使用了一种新的文件格式xib xib的意思是XML interface builder, xib 使用了XML 在工程编译的时候在转换成nib

>> xcode 4.0 之前 interface Builde 是一个独立软件, 而Xcode  4.0 是个大版本 界面被重新设计 interface Builder 被直接集成到xcode

注意点: 当我们用xib 会遇到 xib 添加到控制器view 中有时程序会崩溃

错误提示: unrecognized selector sent to instance 0x7ffae1c1b680'

这时我们应注意xib里控件有几个 ,我们加载xib 会以数组的形式加载 xib对象是按照放进去的顺序排列的

>> Xib 的优点 :

> 开发速度快

> 在版本管理上和纯代码的差异并不是很大 易读易维护

缺点 :

xib中设置往往并非最终设置 UI设计会被代码所覆盖

(如果选择xib,那么要尽量将xib的工作和代码的工作隔离开来:能够使用xib完成的内容就统一使用xib 来做 而不要说三个label其中俩个在xib设置字体 而另一个却在代码设置 尽量仅保持必要的 较少的IBOutelet 和IBAction)

3 xib 和 Storyboard 的区别

xib 是轻量级的

Storyboard 是重量级的

共同点 : 都用来描述软件的界面 都用Interface Buile工具编译

不同点 :

xib是轻量级 用来描述局部的UI界面

Storyboard 是重量级 用来描述整个软件的多个界面 并且 能展示多个界面之间的跳转关系

4 补充:

一、Interface Builder介绍

1、概念

Interface Builder苹果平台下用于设计和测试用户界面的应用程序,简称IB。简单理解,IB就是提供可视化设计环境。

2、作用及特点

IB给用户提供了可视化的操作界面,可以很方便并且直观的设计出用户界面元素。IB提供的拖放面板,使用拖拽就可以方便的构建出UI界面。使用IB是可选的,因为所有控件都可以使用代码来实现。

3、集成

Interface Builder工具是在iPhone SDK中提供的,应用于Mac OC 和iOS应用开发,从Xcode4开始,集成到了其中(之前是独立的软件)。

4、Nib元素

(1) Nib文件是保存由Interface Builder创建的对象及对象间关系的一种资源文档,Nib 是 NeXT Interface Builder的缩写。

(2)早期,IB使用Nib文件存储控件资源,Nib本身是二进制文件。

5、Xib的出现

(1)自从Xcode 3.0 开始,苹果提供Xib文件构建UI元素,本质是XML文本文件,可以很方便的编辑。同时Xib可以编译为Nib。

(2)Nib 和 Xib都是 Interface Builder 的图形界面设计文档。

二、xib介绍

1、简介

(1)IB和xib是从iOS SDK初次面世开始就是捆绑在开发者工具套装内的内容了(独立),而到了Xcode 4之后更被直接集成到了Xcode中成为了IDE的一部分。

(2)Xib是XML格式的文件。

(3)UIViewController生命周期函数loadView之前,Xib会转化成可执行的nib文件

2、使用

(1)通过xib加载控件

<1>loadNibNamed 方法

(2)通过xib加载控制器

<1>initWithNibName: bundle:方法  (如果xib和控制器名字相同或近似,可以不用实例化)

<2>设置xib的身份检查器中的关联

<3>设置File's Owner ,拖动到View上

3、优势

(1)相比纯代码,大大缩短了UI界面搭建的时间,提高了开发效率。

(2)可视化的效果,更直观的设计。

4、问题

(1)Xib无法进行逻辑判断。

(2)很难在运行时进行配置,Xib在使用时,经常要通过代码的补充,来完成功能实现。

(3)多人开发中通过代码修改Xib的属性,可能造成混乱和不可预计的问题。

(4)从程序员角度,可读性较差。不利于统一管理和维护。使用SVN等代码管理工具时,Xib会产生无用的记录,以及版本更新的缺陷。从Xcode5开始,苹果对这一方面问题进行了优化,比如在版本管理上,也可以很好的查找修改记录了。

5、几个和Xib相关的方法

(1)loadNibNamed:    owner:   options    加载Xib控件

(2)aweakFromNib 通过Xib加载控件,会调用关联类中的此方法

(3)initWithCoder    通过Xib加载控件,会调用关联类中的此方法

三、storyBoard

1、简介

(1)storyboard在IOS5引入,是xib集合的描述文件,本身也是xml格式。

(2)提供了nib 和 xib 的集中管理,更直观的展现出他们的关系。

(3)通过可视化界面,设计UI的方式。

2、特点

(1)提供页面间新的挑战方式:segue

(2)描述了若干窗体、组件、Auto Layout 约束等关键信息。

(3)默认storyBoard作为程序的主入口

(4)Auto Layout 跟 StoryBoard 的配合使用,可以大幅提高 UI 开发效率,并准确提供出各控件的位置和约束。

(5)storyBoard中是展现控制器之间的关系。

3、优势

(1)提高UI设计效率的同时,可以很清晰的反映出控制器之间的跳转关系。

(2)在storyBoard中可以提供简单的页面跳转,拖拽就可以设置成功。

(3)UI设计中可以实时直观的反映设计效果,由于代码量较少,所以,bug产生的几率也较低(代码实现UI需要大量代码)。

4、使用

(1)通过storyBoard加载控制器

<1> 创建UIStoryboard 对象: storyboardWithName:

<2> 通过storyBoard对象创建

instantiateInitialViewController;

instantiateViewControllerWithIdentifier;

(2)通过storyBoard加载视图,

<1> 在Prototype cells 中设置样式,和reusedID,可以实现cell重用。

<2> collection中的item注册,也可以通过Prototype cells

5、问题

(1)存在Xib设计中相同的一些问题,比如维护的不方便,多人开发的不便利,没有逻辑判断等等。

(2)最大问题就是多人协作开发,UI控件都在一个storyBoard文件中。

(3)因为是多个Xib,多以会更大一些,加载会慢一些。

(4)由于没有使用代码设计控件,所以重用问题不灵活。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容