Как правильно разрабатывать UI для iOS приложения? Advanced UIKit?

Доброго времени суток!

Столкнулся с проблемой, что не имею четкого представления и понимания о правильных подходах к реализации/программированию именно UI-части приложения, с так скажем "backend" частью пока особых проблем нет.
Приведу пример:
Когда понял, что приложение нуждается в подчинении чему-то более продвинутому и современному чем простой MVC, изучил вопрос архитектурных паттернов, выбрал подходящую(VIPER), изучил более подробно и реализовал.

Однако следующие задачи:
  1. Сделать переиспользуемую сетку с элементами вида "иконка - подпись", причем на маленьком экране показывать в три столбца, на больших в четыре, плюс слегка увеличивать-уменьшать размер самих этих иконок и подписей. В итоге создал xib-файл для одного такого элемента сетки, и класс-наследник UIView, в который передается массив картинок/подписей и он там у себя все высчитывает и строит
  2. Два блока(верхний и нижний) могут изменяться в размерах относительно контента, а блок между ними(label) занимать все оставшееся место. При этом текст в UILabel не должен уходить половиной строки под frame. Пришлось в коде слегка обрезать высоту label чтобы длина была кратна высоте одной строки
  3. Переиспользовать таблицу, убрав некоторые кнопки из tab-bar. Например есть основная лента элементов, а есть такая же лента, только с избранными

    вызвали у меня намного больше проблем и гуглить их реализацию было намного сложнее. В итоге все сделал сам, однако уверен что есть более правильные и элегантные подходы к решению тех задач с UI, которые появляются с каждым днем. Также есть вопрос: Storyboard или UI в коде? Или часть там, часть - там? Пока что у меня второй вариант с отдельным сторибордом для каждого контроллера и вкраплениями xib-файлов для каких-нибудь переиспользуемых вьюшек вроде круглая иконка и подпись. Однако есть подозрения что лучше делать это в коде (задание размеров, позиций, constraint-ов), с использованием сторонних библиотек для layout-а, т.к. быстрее с точки зрения работы приложения , удобнее и легче с точки зрения контроля версий.

    Вопрос не по конкретно вышеперечисленным моментам, а по общей теоретической подготовке и хорошим практикам по работе с UIKit. Ибо просто накидать нужный не-адаптивный интерфейс, связать аутлетами и заполнить view нужным контентом я могу уже давно, даже 70 процентов задач autolayout удается реализовать вполне себе хорошо. Однако в процессе разрастания и усложнения ui и возможностей приложения, все сильнее нуждаюсь в теории и практикам по UIKit уровня выше junior. Подскажите пожалуйста, какие на данный момент bad/best practices, что считается хорошим тоном, а что нет? Может есть какие-нибудь сайты/туториалы, где показывают как создавать переиспользуемые UI-компоненты, как строить сложный autolayout(как правило все туториалы очень простые и в реальной жизни приходится делать что-то в разы сложнее, а правильной теоретической базы по решению тех или инных более менее сложных и реальных задач UI нет).
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы