你的位置:首页 > 操作系统

[操作系统]XIB


XIB

Storyboard 和 xib

1.1 Storyboard故事板 Storyboard的是 ios5 的新特征 目的是代替历史悠久的xib.Storyboard 是多个xib文件集合的描述文件,也采用

>> 注意点: 当我们需要更换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的意思是

>> 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元素,本质是

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

二、xib介绍

1、简介

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

(2)Xib是

(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集合的描述文件,本身也是

(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)由于没有使用代码设计控件,所以重用问题不灵活。