Выбор между двумя - Интерфейсный Разработчик ИЛИ создание через код - PullRequest
5 голосов
/ 17 июня 2011

Когда я начинал с разработки для iPhone, я предпочитал использовать Конструктор интерфейсов для создания представлений в моем приложении. Со временем я рассмотрел вариант создания приложения с помощью кода , с которым мне действительно комфортно работать.
Теперь, когда я знаю оба способа создания своего пользовательского интерфейса, я сомневаюсь, каким путем следовать. Я продолжаю думать, где использовать IB и где использовать код . Как я могу выяснить перед началом работы с моим приложением, каким образом я должен создать свой UI ?

Ответы [ 3 ]

10 голосов
/ 17 июня 2011

Существует ряд факторов, которые могут повлиять на ваш выбор.Это может прийти к личному вкусу, но есть некоторые преимущества использования Interface Builder.

Первое, что нужно признать, это то, что Дизайн пользовательского интерфейса по своей природе является визуальной задачей .Интерфейсный Разработчик может позволить вам создавать и изменять пользовательский интерфейс намного быстрее, чем вы можете в коде.Вместо того, чтобы бесконечно изменять значения CGRect в коде, а затем перекомпилировать, тестировать и повторять этот процесс, вы можете вместо этого получать прямую визуальную обратную связь о ваших изменениях.Это означает, что вы можете более эффективно улучшать и полировать пользовательский интерфейс и даже тестировать радикально разные макеты без особых затрат времени и усилий.

Еще один важный момент заключается в том, что если вы можете создавать и размещать элементы управления в Interface Builder,это означает, что в вашем контроллере представления меньше кода .Меньше кода - это всегда хорошо (меньше ошибок, легче поддерживать, ...).

Поэтому я считаю, что вы должны попытаться определить как можно больше макета и свойств в Интерфейсном Разработчике.Это может быть трудно для людей, которые предпочитают «полный контроль» над вещами.Много лет назад визуальные графические редакторы были известны тем, что делали не то, что нужно, и разработчики часто избегали их использования, когда все делали вручную.Но Interface Builder довольно хорош в том, что он делает, и вы можете легко погрузиться в код, когда вам это нужно.

Ситуации, когда вы будете создавать элементы управления исключительно в коде, - это когда вам нужно динамически создать несколько объектов., например, кнопки миниатюр для фотогалереи, или если у вас есть собственные требования к макету.

Например, если у вас есть метка, высота которой динамическая во время выполнения, и вы хотите расположить под ней группу элементов управления(принимая во внимание его высоту), это может быть сделано только в коде ( ОБНОВЛЕНИЕ: Автоматическая верстка iOS 6 может сделать это сейчас).Вы можете либо создать и разметить все в коде, либо вы по-прежнему можете создавать элементы управления с помощью Interface Builder и просто назначать им произвольные позиции в XIB, которые изменяются при размещении их в коде.Это не редкость, когда я вижу это в некоторых моих XIB:

enter image description here

Кнопки в верхней части могут быть полностью созданы и выложены в IB, но для просмотра изображений ниже нужны их изображенияи позиции для расчета во время выполнения.Поэтому мы просто даем им произвольные позиции в XIB.Некоторым это может показаться уродливым, но это экономит время и усилия при написании кода для создания представлений изображений и настройки их свойств.Опять же, меньше кода - это хорошо.

В других случаях вы можете захотеть использовать код, устанавливая определенные явные свойства.Допустим, у вас есть представление изображения, которое должно принимать сенсорные события, потому что к нему добавлены некоторые распознаватели жестов.Необходимо установить для свойства «Взаимодействие с пользователем» значение ИСТИНА.Лучше сделать это в коде, потому что требование более наглядно, и вы можете оставить соответствующие комментарии относительно того, почему вы устанавливаете свойство.Также сложнее «потерять» настройку, как вы можете в конструкторе интерфейсов, если вам нужно удалить и воссоздать группу представлений.

2 голосов
/ 17 июня 2011

Я думаю, что для многих приложений, использующих стандартный пользовательский интерфейс, Interface Builder является отличным инструментом для быстрой настройки и связывания с базовым кодом. Кроме того, это действительно подчеркивает парадигму представления, отделенного от контроллера, так как вы действительно не можете протолкнуть код туда, где его не должно быть.

При этом я использую его все реже и реже, чем больше узнаю о том, как быстро кодировать интерфейсы из-за того, что им может потребоваться сделать их более гибкими или требовать переменного количества элементов пользовательского интерфейса в зависимости от модели, стоящей за ним.

1 голос
/ 17 июня 2011

Используйте конструктор интерфейса согласно вашему требованию.Это зависит от вас, как вы управляете вещами.Посмотрите, как создать пользовательскую ячейку с помощью конструктора интерфейсов, гораздо проще обновить на более позднем этапе, при использовании кода вам придется вносить много изменений, если меняется макет.Кроме того, вы можете визуализировать представление перед запуском реального приложения, но в коде вы не можете просто предположить. В этом есть и плюсы, и минусы.

...