我正在构建一个基本的应用程序界面,它将混合使用文本,输入字段和按钮。为了获得项目截止日期的工作版本,我想我会在第一次迭代时使用默认的Interface Builder(IB)组件,然后如果有足够的时间,我想通过添加自定义组件来'jazz up'界面..
稍后将IB组件与自定义组件交换起来有多容易?
答案 0 :(得分:2)
这取决于你交换IB组件的确切含义,但总的来说,我会说IB完全支持在自己的概念框架内定制UI。另一方面,很明显以编程方式定义UI将为您提供您可能想到的所有自定义功能。
从某种意义上说,您可以将IB视为一种方式,以图形方式声明UI的元素及其关系,并在加载IB xib文件时自动为您实例化。这本身就是一种非常灵活的机制,可以为您提供充足的可能性。
例如,假设您在IB视图中的某个位置有一个按钮。在第一个版本中,您可以将该按钮的类设置为普通UIButton
;稍后,您只需指定该按钮类实际上是YourCustomClass
并且您拥有它,您的UI将使用您的自定义按钮,而无需更改大量代码(可能除了自定义按钮实现之外的一行或两行) 。对于许多其他类型的UI元素也是如此。
除了这种情况之外,还有像UITableView
这样的类,我认为可以在IB之外更好地定制(即,通过以编程方式指定自定义单元,例如自定义单元)。但是在这种情况下,首先在IB中定义接口也不是一个很大的障碍,你只需将你需要的代码添加到你的程序中。
无论如何,IB有一些不容易实现的定制。一个例子是可以更好地控制UI组件的分配方式和时间;所以,比方说,你只能一次性实例化你的xib文件,而在程序上你可以欺骗它的每个方面。或者,可能有UI元素在内部更适合于程序化定义(例如,可滚动的图片网格),因此IB不适合该法案,或者对此没什么支持(但是你无法定义首先是UI元素。)