2010-11-13 2 views
2

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

Буквально каждая книга делает все в интерфейсе Builder и утверждает, что это единственный способ добиться реального MVC.

Пример: В одной из этих книг упоминается, что программно создавая UINavigationController с контроллером Root View и всем остальным, что в нем есть, существует большой беспорядок и не будет использоваться повторно при переносе на iPad, в то время как это делается в XIB умное решение. Тогда порт для iPad с использованием UISplitViewController будет простой задачей.

Итак, когда я делаю iPhone-приложения и хочу их перенести на iPad, какие стратегии работают, чтобы повторно использовать как можно больше кода? Я хотел бы узнать больше о том, как отделить мой код и достичь лучшего общего архитектурного дизайна, не используя Interface Builder.

Для тех, кто хочет сказать мне, что я должен пойти с IB: Опять же, я делаю много пользовательского интерфейса, где IB часто находится в пути. И не говоря уже обо всех анимациях. У меня действительно есть свои причины. Для людей, которые делают UI IB по умолчанию, действительно все в порядке - но, пожалуйста, я не хочу начинать бой за IB против программного интерфейса или по умолчанию UI против пользовательского интерфейса! Это все о том, как добиться большого кода многократного использования, делая все программно, и оба имеют свои плюсы и минусы.

+0

Минималистская статья Мэтта Галлахера - отличное место для начала http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html – blissapp

ответ

5

Несмотря на то, что вы не просили об этом, я вынужден объяснить, почему люди в целом (возможно, не вы) должны рассмотреть IB, а затем обратиться к вопросу о пользовательских компонентах.

Я использую много анимаций и пользовательских компонентов. И я люблю использовать IB ...

Ключ должен использовать IB для его сильных сторон, а затем решать, что делать с остальным оттуда. Каковы же самые сильные стороны IB? Соединения, размещение, автоматическое изменение размера и настройки.

Соединения связывают аспекты взглядов и контроллеров вместе. В IB быстрее втягивать несколько соединений с делегатами или ссылками, чем писать код, который формирует соединения. И это быстрое место для просмотра всех ссылок на пользовательский интерфейс, который вы строите.

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

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

Наконец-то идет настройка. Это может быть много утомительного кода для написания; попробуйте настроить все свойства на UILabel вручную, и у вас будет стремление к быстрым изменениям в IB.

С учетом всего сказанного, что такое хороший подход к пользовательским компонентам? Мне нравится использовать UIViews в экранах IB, с типом класса, установленным в пользовательский UIView, который затем заполняет дисплей во время выполнения. Но, по крайней мере, IB помогает мне получать композицию, размещение и автоматическое изменение размера с минимальной суетой, а также проволочные аспекты этого пользовательского представления в контроллере.

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

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

+0

+1. Интерфейс Builder - это огромная экономия времени. –

1

Одна книга, которую мне очень понравилась, была книга iPhone Erica Sadun 1st Edition. Он сделал все программно.

К сожалению, второе издание раздуто.

1

Если вы повторно много пользовательских объектов пользовательского интерфейса, было бы целесообразно, чтобы написать код, который

  • читает PLIST (или более общий файл XML), определяющий, как пользовательские объекты пользовательского интерфейса должны быть помещены/анимированный
  • , а затем создает ваши пользовательские объекты интерфейса соответственно.

Это как написать файл формата mini-xib, адаптированный к вашим объектам пользовательского интерфейса; вы также можете почувствовать, что вы контролируете все, как дополнительный бонус.