Конструктор раскадровки/интерфейса и полные представления кода для разработки под iOS

У меня есть мнение о разработке iOS, по которому я хотел бы получить обратную связь.

Storyboard/Interface Builder, на первый взгляд, потрясающие инструменты. Правда в том, что помимо быстрых прототипов и действительно простого пользовательского интерфейса, я всегда чувствую себя заблокированным, используя их. Этот вопрос предлагает, вероятно, хороший пример: как я могу использовать одну раскадровку для экранов iphone 4 и 3.5 с авторазметкой (ios6 + ios7)?

Я подумываю закодировать все свои взгляды. В основном потому, что это позволит мне реализовать некоторую логику, например равное расстояние между элементами. Что-то, что, насколько мне известно, невозможно сделать на разных устройствах с помощью инструментов с графическим интерфейсом.

Мои вопросы: Поддерживает ли Storyboard/IB расширенный макет просмотра? Как вы обычно кодируете свое представление, если делаете это: расширяете UIView/настраиваете контроллер?

РЕДАКТИРОВАТЬ: ссылка на принятый ответ хороша. Заинтересованные читатели также могут ознакомиться с соответствующим примером руководства Apple Auto Layout Guide: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html#//apple_ref/doc/uid/TP40010853-CH5-SW7


person AsTeR    schedule 14.11.2014    source источник
comment
Этот вопрос действительно слишком широк для одного ответа. Есть ли конкретный расширенный макет представления, который вы хотите поддерживать, но не можете понять, как его создать в IB? Обратите внимание, что Xcode 6 предоставляет новые функции для раскадровок, которые не рассматриваются в этом вопросе.   -  person Kevin    schedule 14.11.2014
comment
Вы можете сделать равные интервалы в раскадровке, но вам нужно добавить промежутки между вашими представлениями, чтобы добиться этого (я думаю, что это лучший способ сделать это и в коде, если вы поддерживаете несколько размеров экрана). Что касается вашего предыдущего вопроса, самый простой способ сделать это - создать IBOutlets для верхнего ограничения и ограничения высоты и изменить их постоянные значения в коде (таким образом, гибридный подход раскадровки и кода). Раскадровка может поддерживать довольно сложные макеты, но каждый случай индивидуален, и вы должны решить, какой из них лучше всего подходит для вас.   -  person rdelmar    schedule 14.11.2014


Ответы (2)


http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

Рэй дает хорошее начальное руководство о том, как легко сейчас создать единое адаптивное представление, что заставило меня отказаться от полностью программирования.

person user1432395    schedule 14.11.2014

До iOS 8 было намного сложнее создавать сложные макеты с помощью Interface Builder. По сути, вы были ограничены растяжением или закреплением краев. Теперь вы можете создавать макеты, которые адаптируются к классам размеров, и изменять их макеты или ограничения в зависимости от ширины и высоты вашего устройства.

При этом даже в действительно сложных сценариях, с которыми IB не может справиться, я все равно создаю фрагменты представлений в XIB, а затем размещаю эти фрагменты вручную.

TLDR; Интерфейсный конструктор будет полезен в 99,9% случаев, если вы знаете, как использовать все его функции.

person InkGolem    schedule 14.11.2014