Существует ряд факторов, которые могут повлиять на ваш выбор.Это может прийти к личному вкусу, но есть некоторые преимущества использования Interface Builder.
Первое, что нужно признать, это то, что Дизайн пользовательского интерфейса по своей природе является визуальной задачей .Интерфейсный Разработчик может позволить вам создавать и изменять пользовательский интерфейс намного быстрее, чем вы можете в коде.Вместо того, чтобы бесконечно изменять значения CGRect в коде, а затем перекомпилировать, тестировать и повторять этот процесс, вы можете вместо этого получать прямую визуальную обратную связь о ваших изменениях.Это означает, что вы можете более эффективно улучшать и полировать пользовательский интерфейс и даже тестировать радикально разные макеты без особых затрат времени и усилий.
Еще один важный момент заключается в том, что если вы можете создавать и размещать элементы управления в Interface Builder,это означает, что в вашем контроллере представления меньше кода .Меньше кода - это всегда хорошо (меньше ошибок, легче поддерживать, ...).
Поэтому я считаю, что вы должны попытаться определить как можно больше макета и свойств в Интерфейсном Разработчике.Это может быть трудно для людей, которые предпочитают «полный контроль» над вещами.Много лет назад визуальные графические редакторы были известны тем, что делали не то, что нужно, и разработчики часто избегали их использования, когда все делали вручную.Но Interface Builder довольно хорош в том, что он делает, и вы можете легко погрузиться в код, когда вам это нужно.
Ситуации, когда вы будете создавать элементы управления исключительно в коде, - это когда вам нужно динамически создать несколько объектов., например, кнопки миниатюр для фотогалереи, или если у вас есть собственные требования к макету.
Например, если у вас есть метка, высота которой динамическая во время выполнения, и вы хотите расположить под ней группу элементов управления(принимая во внимание его высоту), это может быть сделано только в коде ( ОБНОВЛЕНИЕ: Автоматическая верстка iOS 6 может сделать это сейчас).Вы можете либо создать и разметить все в коде, либо вы по-прежнему можете создавать элементы управления с помощью Interface Builder и просто назначать им произвольные позиции в XIB, которые изменяются при размещении их в коде.Это не редкость, когда я вижу это в некоторых моих XIB:
Кнопки в верхней части могут быть полностью созданы и выложены в IB, но для просмотра изображений ниже нужны их изображенияи позиции для расчета во время выполнения.Поэтому мы просто даем им произвольные позиции в XIB.Некоторым это может показаться уродливым, но это экономит время и усилия при написании кода для создания представлений изображений и настройки их свойств.Опять же, меньше кода - это хорошо.
В других случаях вы можете захотеть использовать код, устанавливая определенные явные свойства.Допустим, у вас есть представление изображения, которое должно принимать сенсорные события, потому что к нему добавлены некоторые распознаватели жестов.Необходимо установить для свойства «Взаимодействие с пользователем» значение ИСТИНА.Лучше сделать это в коде, потому что требование более наглядно, и вы можете оставить соответствующие комментарии относительно того, почему вы устанавливаете свойство.Также сложнее «потерять» настройку, как вы можете в конструкторе интерфейсов, если вам нужно удалить и воссоздать группу представлений.