xib文件的应用

iOS开发中一直存在的分歧:到底是手写代码还是用nib文件。以前我是一个坚定的纯代码布局者。一直都鄙视用nib文件布局的,感觉这就是偷懒,而且会导致代码不好看,所以也一直都没认真看过nib布局。可是后来,当美工说,这个在iPhone4上布局有问题,在iOS6上按钮显示效果不一样………balabala……我发现,修改布局时间就能占一天。所以我认真看了下xib文件的使用。发现,用它来适配多屏幕太方便了。加之苹果不断的优化,我想以后的日子中,xib文件也会越累越流行的。

瞎扯到此,那就记录下我最近看的关于nib文件的使用。

很久之前,nib文件还是nib文件。后来出来了xib文件。这两者区别就是:

xib文件是一个xml文件,nib文件是一个纯二进制文件。xib序列化的记录了所有关于view,file's owner,responser等信息。

xib文件的好处:

1,版本是管理。xib作为一个xml文件更适于git等版本管理软件,而nib这个二进制文件,非常不利于版本管理(如果git中有一个大的二进制文件,那么会大大拖慢git操作的速度)。

2,xib文件程序员可以直接用文本编辑器打开看,nib文件是不可能的。

3,xib文件最后也要转为nib文件才会被程序使用。这一步是在编译时完成的。这样,既保证了nib的速度,用保证了程序员的使用和管理。


关于xib文件:主要有view,file's owner,responser这三部分组成。要明白的是,苹果是严格按照MVC设计模式来的,因此,这里面也是遵循MVC的。不过主要是V和C,M是比较隐藏的。V当然指的就是View,C是指file's owner,其中可以有个M的,就是View栏中的Object。View的创建是在调用 [[NSBundle mainBundle] loadNibNamed:owner:options:]时进行初始化的。file's owner是在代码中创建实例了才会和view中的IBoutlet相连。这里需要说一下的其中有一个选项是Object。它是可以代指任何对象的。

file's owner和View都有Custom Class。根据这个的不同,可以分为四种情况:

1,file's owner:Custom Class       View:nil

2,file's owner:nil                          View:Custom Class

3,file's owner:nil                          View:nil

4,file's owner:Custom Class       View:Custom Class

其中情况1是最常用的。它是自定义一个控制器然后用xib对其View进行布局。情况2是自定义一个View。程序中经常会需要定制的view,那么这时候2就是最合适的,而且,定制的view可以复用。情况3同2差不多,只是View自定义的程序相对较落,不能用代码管理其中的事件。4相对来说用的不多,它是在特定的CustomController中添加CustomView。

使用xib文件一个最大的坏处就是对于版本管理完全是个灾难(相对于代码来说)。当多人开发中遇到冲突时,面对XML文件,真是一万个草泥马在心中奔腾……因此,xib文件用的时候,只把布局的任务交给它,至于其他的属性,尽量用代码来写,比如圆角、颜色、title等。尽可能减少冲突。


PS:

1,[[NSBundle mainBundle] loadNibNamed:owner:options:]和[UINib nibWithNibName:bundle:nil的区别:

前者返回的是view,这个方法会直接调用initWithCoder返回实例(注意,这里都是autorelease的),后者返回的nib文件,没法直接用,只有在tableview中常用。   

2,object的使用:object其实没什么用,它会直接实例化一个变量,不过既然不是view,何不用代码实现。


这里有对xib文件应用的一个例子:http://www.cocoachina.com/ios/20150202/11086.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值