Как добиться многократного использования кода, когда все делается программно, без использования Interface Builder? - PullRequest
2 голосов
/ 13 ноября 2010

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 13 ноября 2010

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

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

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

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

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

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

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

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

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

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

1 голос
/ 13 ноября 2010

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

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

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

1 голос
/ 13 ноября 2010

Одной книгой, которая мне действительно понравилась, была книга Эрика Садуна «iPhone Cookbook 1st 1st».Все делал программно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...