有关nib、xib和storyboard的往事

有关nib、xib和storyboard的往事

nib和xib的那些事儿

开发 iOS 或 Mac 程序,搭建界面是避免不了的。Xcode 包含了一个工具 Interface Builder,可以用图形化的方式,使用鼠标拖拉来创建界面。Xcode 3.0 之前 Interface Builder 创建的文件是二进制格式 nib,nib 代表 NeXT Interface Builder。乔布斯从苹果公司出走之后,创建了下一个公司 NeXT, 之后 NeXT 又被苹果公司收购。现在 iOS 或 Mac 开发的整套系统、工具、类库最开始都源自 NeXT。二进制格式不好管理,也不方便版本控制,Xcode 3.0之后,Interface Builder 使用了一种新的文件格式xib。xib 的意思可能是 XML Interface Builder,也有可能是 OS X Interface Builder。xib 使用了 XML,在工程编译的时候再转换成 nib。Xib就是一个描述文档,这里面包含了用户界面和用户界面相关元素。这样做的主要原因是,方便程序员,因为其是“所见即所得”的,程序员不需要像原来一样写一堆代码,然后运行出来才能看到界面元素的执行结果,这样是很低效的。在 Xcode 4.0 之前,Interface Builder 是一个独立的软件。而Xcode 4.0 是个大版本,界面被重新设计,Interface Builder 被直接集成到 Xcode 当中。其实 Interface Builder 可以配置创建任何 NSObject 对象,但我们绝大多数情况下只用它来创建界面。

xib设计的一大目的其实是为了良好的MVC:一般来说,单个的xib文件对应一个ViewController,而对于一些自定义的view,往往也会使用单个xib并从main bundle进行加载的方式来载入。IB帮助完成view的创建,布局和与file owner的关系映射等一些列工作。

storyboard的那些事儿

iOS5之后Apple提供了一种全新的方式来制作UI,那就是StoryBoard。简单理解来说,可以把StoryBoard看做是一组viewController对应的xib,以及它们之间的转换方式的集合。在StoryBoard中不仅可以看到每个ViewController的布局样式,也可以明确地知道各个ViewController之间的转换关系。相对于单个的xib,其代码需求更少,也由于集合了各个xib,使得对于界面的理解和修改的速度也得到了更大提升。

storyboard的能做的事儿

storyboard可以使程序的逻辑结构更加清楚,减少程序的代码量,使view和controller耦合度降低。

storyboard提供的功能有自动布局(Auto Layout)、Size Classes、Scene跳转、代码可视化。

Storyboard的弊端

难以维护;性能瓶颈;错误定位困难。

有关于storyboard的更多内容,请阅读Storyboard的爱与恨

xib文件加载

创建了一个xib文件,并在xib文件中添加了一个UIView和UILabel。

创建步骤如下:

xib文件界面显示如下:

Xib文件创建好后,点击该Xib文件,设置如下:

1、点击test.xib -> File's Owner -> 身份检查器 -> Class -> UIViewController;

2、点击File's Owner -> 按住"Ctrl"按键不放 -> 鼠标左键按住不放,拖动到"View" -> 选中view。

下面使用source code打开xib文件:

xml详情如下:

在上面我将部分代码加粗突出显示出来,可以看出...对应着添加的view和label控件。

使用xib文件

- (IBAction)btnClick:(id)sender {

_viewOfStoryboard = [[TestViewController alloc]initWithNibName:@"test" bundle:nil];

_viewOfStoryboard.view.backgroundColor = [UIColor whiteColor];

[self dismissViewControllerAnimated:YES completion:nil];

[self presentViewController:_viewOfStoryboard animated:YES completion:nil];

}

相关灵感

365365094 成语词典

成语词典

📅 10-03 👁️ 9658
365365094 (已解決)Outlook未顯示舊信件|6種方式
正规beat365旧版 word的勾勾怎么打(word里如何在数字上打对勾)
365365094 2023年世界杯篮球赛

2023年世界杯篮球赛

📅 07-14 👁️ 9871
正规beat365旧版 史上最强京华六合一7101带你玩转新交规
365bet足球网开户 [收藏级]拥有美腿的日本女演员,8位颜高艺好的绝色御姐推荐!
365bet足球网开户 【2025 評比】對得起價位的高品質!日系真無線耳機推薦 - mbzhu(碼幫主)
正规beat365旧版 冰箱的功率是多大家用四門冰箱功率多大
正规beat365旧版 C轮融资完成后,企业多久能实现上市目标?