是否有任何理由以编程方式创建视图而不是使用界面构建器?

时间:2016-06-07 13:15:24

标签: ios iphone interface-builder

我已经看到一些团队需要使用像Masonry等工具以编程方式创建每个视图。我想知道,这是什么原因。我一直认为IB是一种创建视图和布局的快速简便的方法。

请您说明使用程序化方法代替IB的所有优缺点吗?

3 个答案:

答案 0 :(得分:1)

通常的论据很好地总结了in this post

  

我花了无数个小时来搜索bug的来源,却发现它是Interface Builder中六个检查员之一的一些复选框。如果是在代码中,可以很容易地浏览视图代码并更快地查看问题的来源。

我还没有真正发现整体都是如此。有时候,尤其是汽车布局,通常是真的。

  

如果您使用Interface Builder并且有出口而忘记在第二个位置连接插座,则会在运行时崩溃。这很糟糕。这引入了一类全新的错误。

发生了,但是用viewDidLoad中的断言进行防御性编程以检测它们并不困难。

  

您是否曾在NIB中遇到合并冲突?这是最糟糕的。 (虽然XIB格式有所帮助,但它现在很糟糕而不是不可能。)如果你在一个有多个开发人员的大型应用程序中工作,你将浪费大量时间来处理这个问题。

这个确实是一个非常坚实的论点。故事板是一个瘫痪的痛点,直到我们有参考,现在它只是经常烦人。代码差异和历史 FAR 比Interface Builder更好。

  

每当我在编辑NIB时遇到崩溃时,我都会抱怨自己并希望代码更多。

曾经是一个很好的论点。你还学会避免一些粗糙的边缘,但这些日子它是一个平庸的论点。

  

布局代码并不难。自动布局比传统布局要多一些代码,但它仍然不错。尝试在Interface Builder中使用自动布局令人抓狂。设置出口以控制内置约束只是愚蠢。

     

只是覆盖layoutSubviews并做你的事情是如此简单。就个人而言,我觉得这比大多数事情的自动布局更容易使用。

几年前,这一点毫无保留。它现在变得更好了,堆栈视图让痛苦的很多消失了,但它仍然是一个痛点。

  

Interface Builder本身也不错。它确实鼓励不良做法,阻止可重用性(使与他人合作变得更加困难),并减慢您的工作流程。

这使得与其他人合作变得更加困难是一个可靠点,怀疑任何在大型项目上工作的人会不同意,因为对Interface Builder文件进行合并编辑几乎是不可能的。剩下的......充其量只是争论不休。

答案 1 :(得分:0)

这一切都取决于要求。例如,如果要在按钮上添加一些视图,则必须以编程方式添加它。

两者之间没有性能差异,无论是以编程方式添加还是在“界面”构建器中添加。

不同之处在于,通过界面构建​​器,与编程方式相比,它变得非常容易,这就是为什么apple提供界面构建器以使其更加开发人员友好和简单,否则一切都只能通过代码完成。

因此,在可能的情况下使用IB会更好,因为它太容易和简单,而且花费的时间也少得多。

答案 2 :(得分:0)

这完全取决于您的选择。我更喜欢以编程方式。 原因 -

    当您尝试在包含多个目标的大型项目中打开XcodeXIB时,
  • storyboard通常会挂起。

  • Smaller项目规模。

  • 更容易调试view heirarchy.

  • 查看是动态的,然后在XIB中创建它没有意义。
  • 以编程方式创建视图时,很容易解决冲突。
  • 关于苹果如何创建观点的非常好的文章:Apple NIB

你应该使用混合方法。