应该或不应该使用nib文件?

Luo*_*Duc 7 storyboard xib nib ios

我是iOS开发的新手.我已经阅读了一些我在网上找到的源代码,其中很多都没有包含一个nib文件.所有视图似乎都是从代码中手动绘制的.

拥有/没有nib文件有什么好处?他们为什么选择从代码创建所有内容,而不是像图形板或*.xib文件那样可视化的内容?

bry*_*mac 11

我喜欢代码的最大原因是它在源代码控制中差异很大.XIB非常难以区分,合并和读取.

代码也很容易复制/粘贴已保存的代码段.有了IB,我总会忘记一些复选框,让我想知道为什么魔法无效.我的笔记有代码片段.

IB真正擅长的是布局和帮助您使用人机界面指南(控件之间的像素数等...与guiedlines).

所以,我个人的偏好是IB中的布局和代码中的其他所有内容(包括目标,操作,添加列等等......).然而,在动态场景下,IB崩溃了,你最终得到了自定义视图.

这是一篇相关的帖子:

在团队环境中合并时的Interface Builder(XIB)或代码?


cso*_*iou 9

为什么你应该使用笔尖以及为什么不应该使用笔尖有很多原因.没有明确的答案,每个答案取决于您需要做什么.

除了Nibs提供的明显优势(快速的UI创建过程,最小化.m文件中的视图构造代码),它们提供了一些你无法找到的东西:解决本地化问题.在将您的应用程序本地化为其他语言时,您会偶然发现需要2-3个单词来解释的短语和事物,而在另一种语言中,他们只需要一个.当使用不同的本地化时,这会严重导致视图控制器内的错误视图错误.因此,您可以为Xcode 4中的每个笔尖设置2-3个子笔尖,并按照您喜欢的方式对每个笔尖进行本地化,并将按钮和视图放在正确的位置,而不必担心根据语言重新定位视图用户有.如果你要使用代码来完成所有这些操作,那么你应该放置'if'到处都是,这肯定是一个糟糕的编程习惯,并且容易出错.

我已经创建了一些视图控制器,如果我不使用界面构建器,则需要数百行才能设置视图.

但是,NIB永远不会以编程方式实现创建视图的性能,因为每个NIB都是用HTML/XML编写的视图描述符,并且在创建任何视图之前,必须从磁盘读取文件并进行分析.Nibs还缺少普通代码所具有的自定义选项(阴影,圆角和其他Quartz魔法).这些自定义选项不可用,因为有很多方法使用代码来达到同样的效果,无论是聊到更高级别的核心动画层,通过直接寻址QuartCore和CGGraphics,做重的东西有这肯定是更快,最值得推荐的案例(使用图层的阴影可能非常慢).因此,Apple不希望将开发限制为一种特定的绘制方式.

NIB存在是有原因的.您必须确保在应用程序中了解创建NIB的原因.Nib存在将代码连接到出口,促进本地化,加速开发和清理代码.在项目中你肯定必须使用Nib,但你必须避免使用它们,普通代码也会以最少或类似的努力给你相同的结果.

最后但并非最不重要的是,考虑内存管理.使用Nib将影响IBOutlets等已分配对象的重新分配.如果您确定要创建的IBOutlet将在您需要时取消分配,请不要使用NIB.请改用普通代码.


tho*_*mas 7

在代码中创建视图有很多原因.

  • nib-files是延迟加载的,并且有时导致用户不喜欢明显缺乏反应
  • 你无法配置IB中的所有内容,很多视图需要一些花哨的附加功能
  • 有时,只需单击并拖动所有需要的东西,就可以更轻松地编写视图
  • ...

我认为最重要的原因是缺乏性能和功能.

当我只想用简单的按钮和标签以及原型设计来显示简单的信息时,我正在使用nib文件.


Cos*_*que 5

有一些非常简单的nib,如典型的MainWindow.nib,它们没有本地化的内容,可以用一行代码重现.在这种情况下,代码比取消归档nib要快得多.

还存在高度动态的布局,这些布局不可能被描述为笔尖.

您应该在每种特定情况下选择最方便有效的方法.总会有权衡,只需明智地选择.