我已经看到一些团队需要使用像Masonry等工具以编程方式创建每个视图。我想知道,这是什么原因。我一直认为IB是一种创建视图和布局的快速简便的方法。
请您说明使用程序化方法代替IB的所有优缺点吗?
答案 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)
这完全取决于您的选择。我更喜欢以编程方式。 原因 -
Xcode
或XIB
时, storyboard
通常会挂起。
Smaller
项目规模。
更容易调试view heirarchy.
你应该使用混合方法。