Преимущества и недостатки использования раскадровки?
Я уже некоторое время пишу приложения для iOS и постепенно перешел от выполнения пользовательского интерфейса полностью программно к интенсивному использованию Interface Builder. Я сейчас думаю об использовании новой функции раскадровки для некоторых из моих новых проектов, но не хватает опыта или знаний, чтобы рассчитать преимущества и недостатки. может ли кто-нибудь привести несколько примеров или информацию о том, когда использование раскадровки окупилось и когда это было пустой тратой время?
6 ответов
преимущества раскадровки
- это круто - учтивый способ проектирования интерфейсов
- использование
StoryBoardSegues
для определения навигации / модальных отношений - если ваше приложение поддерживает несколько устройств, хороший способ для организации разных видов (на файл раскадровки, а не именование и т. д.)
- хорош для прототипирования
- прототип
UITableViewCell
можете сэкономить время
недостатки Раскадровка
- это функция выполнения, поэтому я считаю, что она доступна только в iOS 5
-
StoryBoardSegues
являются своего рода жесткими в моем опыте, и вы можете использоватьprepareForSegue
много - как IB, не очень дружелюбный с другими двигателями дисплея и toolkits
- затрудняет обмен проектами для одного представления или набора представлений-вы должны отправить все или ничего
они кажутся поверхностными, я думаю, я не дал он много думал... Сначала я был помешан на сюжетных досках, но теперь я вернулся к IB или даже просто конфигурации programatic view... Чем больше я их использую, тем меньше они мне нравятся, и тем больше они кажутся трюком/пустой тратой времени.
редактировать
Я написал этот ответ несколько лет назад. Я оставил его таким же, как и раньше для потомков, хотя некоторые моменты, вероятно, больше не актуальны (т. е. тот факт, что для него требуется iOS 5+).
через какое-то время, мое мнение на раскадровке не изменилось. Как упоминали другие, они в порядке, если вы работаете в одиночку над приложением с несколькими представлениями для управления, но они становятся настоящей болью с управлением версиями и сотрудничеством. Кроме того, я предпочитаю один файл-один объект, а раскадровки, очевидно, связывают вещи вместе (как и IB, но в меньшей степени).
если бы я писал приложение, предназначенное для поддержания в течение любого серьезного периода времени, я бы пошел с конфигурацией программного представления через IB, но определенно IB над раскадровками.
еще один недостаток с раскадровкой не упоминается, что слияния могут быть очень трудно, если не невозможно, если есть конфликты.
Update: это также пришло в голову, что он ставит логику в двух местах. Если ваш сегмент не делает правильную вещь, это может быть из-за ошибки в prepareForSegue или потому, что вы неправильно назвали свой сегмент. Делать что-то программно, в конце концов, не так уж сложно.
на последнем WWDC (2013) Apple Devs настоятельно рекомендуем использовать раскадровку и встроенный IB материал, чтобы сделать большую часть вашего кода для вас, а не писать его вручную, потому что вы, скорее всего, избежать устаревания и воспользоваться обновлениями функций через автоматические преобразования.
единственным недостатком является сложность разрешения сотрудничества git на раскадровках, поскольку практически на каждом коммите будут конфликты.
Если вы сольный программист, вы всегда следует использовать раскадровки.
У меня есть похожий фон для вас - я начал с в основном создания моего пользовательского интерфейса iOS программно, так как IB не был действительно удобным для пользователя, но в последнее время решил использовать IB все больше и больше, так как это лучше для проектирования пользовательского интерфейса и отлично работает для стандартных элементов.
с новым Xcode я переключился на раскадровку, так как они обеспечивают полное представление о приложении. Можно создать полный пользовательский интерфейс (со всеми представлениями) в одном файле, который можно использовать для прототипирования и который я могу просмотреть своим коллегам, прежде чем писать первую строку кода. Это намного лучше и проще, чем проектирование с помощью photoshop или аналогичных инструментов.
однако, если вы используете много собственных элементов/элементов управления UI или что-то, используя другой "движок" (cocos2d, OpenGL и т. д.) обычно лучше генерировать пользовательский интерфейс программно, так как эти "движки" на самом деле не интегрированы с IB/раскадровками.
Я изучил раскадровку, следуя учебникам с веб-сайта raywenderlich, и есть много вещей о раскадровке.
вот ссылка на сайт: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1
преимущества раскадровки:
1) Перед началом разработки приложения вы можете увидеть все экраны приложения.
2) Вы можете визуально увидеть отношение между каждый экран.
3) это может помочь уменьшить количество кода, особенно в случае UITableView вы можете использовать ячейки прототипа и статические ячейки для разработки вашего TableView в раскадровке.
4) в случае, если вам нужно работать над чужим кодом, вы можете получить лучшее представление о потоке приложения, просмотрев раскадровку за короткое время.
5) Вы можете настроить пользовательский интерфейс для iPhone 4 и iPhone 5, применив форм-фактор retina из раскадровки, без запуска приложения снова и снова.
6) Если вы делаете работу на основе клиента, то некоторые клиенты хотят увидеть прототип приложения, прежде чем начать его разработку, здесь раскадровка поможет вам много.
недостатки раскадровка:
1)для раскадровки вам понадобится большой экран специально для iPad.
2) я также испытываю трудности при копировании представлений из других приложений в раскадровку.
3) я тоже испытайте проблемы в раскадровке, когда несколько разработчиков работают над одним проектом с помощью репозитория git.
читая и понимая преимущества и недостатки, вы можете судить о себе, когда использовать раскадровку.
Одно Слово (НЕ) Один из самых больших недостатков раскадровки, помимо конфликтов git, которые делают невозможным работу над ним двух или более человек. но если проект очень большой и у вас +40 экранов , если у вас ума достаточно, чтобы переместить что-нибудь всего в один пиксель в любой вид контроллера в раскадровке, вы будете иметь очень большое время компиляции, что вы можете построить ваше приложение и запустить его в более, чем 5 минут, и конечно не позвольте мне начать с архивирование дать некоторые специальные приложения .
после этого болезненного опыта я полностью вернулся к файлам oldy goldy great xib и удалил файл раскадровки в огромном огне celeberation .