как я могу использовать одну раскадровку для 4-дюймовых и 3,5-дюймовых экранов iphone с функцией автоматического размещения (ios6 + ios7)?

Несмотря на то, что существует много вопросов и ответов о создании макета раскадровки, который будет работать как на экранах размером 4 ", так и на 3,5", я не смог найти подходящего решения для следующего сценария.

Я использую autolayout с ios6 (и ios7), и мне не нужно поддерживать landscpae или ipad. У меня есть UIView с несколькими подпредставлениями, которые должны выглядеть как макет ниже. В раскадровке легко установить ограничения для автоматического размещения в соответствии с любым размером экрана. Мой вопрос -Как заставить autolayout выбрать правильные ограничения в зависимости от размера экрана во время выполнения?

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

Я попробовал 2 способа сделать это на одной раскадровке, но я не удовлетворен ни одним из них.

Удвойте ограничения. Большее ограничение (50) имеет более высокий приоритет, чем нижнее ограничение (30). Проблема с этим подходом состоит в том, что на 3,5-дюймовом размере экрана автоматическое расположение может выбрать только несколько ограничений с более низким приоритетом - достаточно, чтобы удовлетворить макет - но оставить некоторые ограничения с высоким приоритетом.

Подкласс NSLayoutConstraint. В этом методе все ограничения в раскадровке устанавливаются как NSDualLayoutConstraint. В коде инициализации NSDualLayoutConstraint константа ограничения изменяется на значение 3_5_constant в случае, если размер экрана времени выполнения равен 3,5 ". Этот метод является более детерминированным, но вы не можете видеть 3,5-дюймовый макет в предварительном просмотре построителя интерфейса ,

Если бы только ограничения интерфейсного разработчика имели вторичное постоянное значение, которое было бы применено при размере экрана 3,5 дюйма, это решило бы мою проблему. Поэтому я остаюсь с вопросом - как правильно использовать одну раскадровку, чтобы правильно расположить ее подпредставления для 4 "И 3,5" размеры экрана?

Ответы на вопрос(4)

Ваш ответ на вопрос