Должны ли представления создаваться с использованием NIB или кода в iPhone? - PullRequest
3 голосов
/ 16 июня 2009

Есть ли какая-либо производительность, недостатки разработки или преимущества при проектировании представлений с использованием Interface Builder?

Ответы [ 6 ]

11 голосов
/ 16 июня 2009

Часто вы хотите использовать Interface Builder; Есть несколько причин, почему вы хотели бы сделать это через программные интерфейсы:

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

Несмотря на это, основная причина, почему программные интерфейсы иногда более выгодны по сравнению с использованием Interface Builder, заключается в элементах интерфейса, которые необходимо создавать несколько раз - например, при создании n UIImageView s - на основе переменной, которая не может реплицироваться в Интерфейсном Разработчике. Программные интерфейсы обеспечивают такую ​​гибкость и обычно более эффективны в этом случае.

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

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

2 голосов
/ 16 июня 2009

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

Недостатком программной генерации GUI в ваших UIViewControllers является то, что вы стираете разницу между представлениями и контроллерами в шаблоне MVC. Если вы можете сохранить генерацию графического интерфейса для метода loadView, вы все равно сможете поддерживать приличную границу между кодом, который генерирует информацию, и кодом, который отображает информацию.

Вкратце: я предпочитаю генерировать GUI, переопределяя loadView в подклассах UIViewController.

2 голосов
/ 16 июня 2009

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

1 голос
/ 30 сентября 2011

Почему никто не упомянул перевод. У нас есть проект в 11 локалях - это даст количество nib * (# локалей) - это просто неприемлемо (более ста перьев для проекта из 10 UI).

0 голосов
/ 17 сентября 2009

Никогда не смотрите на генерацию кода NIB с помощью инструмента. Но посмотрите на записку от яблока.

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

0 голосов
/ 16 июня 2009

Из того, что я видел до сих пор, генерация представлений с использованием XIB очень проста. Но поскольку я долгое время не занимался разработкой для iPhone, я могу лишь направить вас к этой статье, в которой показан пример XIB, преобразованного в код Objective-C.

http://arstechnica.com/apple/guides/2009/04/iphone-dev-convert-xib-files-to-objective-c.ars

Интерфейсный строитель в любое время! :)

Я уверен, что при прямом кодировании представления не будет значительного прироста производительности.

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