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

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

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

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

NSLayoutConstraintТо, что вы предлагаете, - это гораздо больше кода (IBOutlet для каждого ограничения в раскадровке), и меньше заметности) - person gardenofwine   schedule 29.10.2013@IBDesignableи@IBInspectable, чтобы теперь приходилось возиться с атрибутами времени выполнения. - person User   schedule 01.05.2016