В то время как есть много вопросов и ответов о построении раскладки раскладки, которые будут работать как на размерах экрана 4 ", так и 3,5", я не нашел подходящего решения для следующего сценария.
Я использую автозапуск с ios6 (и ios7), и мне не нужно поддерживать landscpae или ipad. У меня есть UIView с несколькими subviews, которые должны выглядеть как макет ниже. Легко настроить ограничения автоопределения в раскадровке, чтобы они соответствовали размерам экрана. Мой вопрос: Как сделать автозапуск выбрать правильные ограничения в зависимости от размера экрана во время выполнения?
Заметьте, что я НЕ ДОЛЖЕН использовать 2 разных раскадровки. Сделать это во всем моем приложении было бы большой работой, и мне пришлось бы подключить всех делегатов, точек доступа и действия на каждом раскадровке. Изменение экрана потребовало бы, чтобы я выполнял двойную работу.
Я пробовал 2 метода, чтобы сделать эту работу на одной раскадровке, но я не удовлетворен ни одним из них.
- Двойные ограничения. Большее ограничение (50) имеет более высокий приоритет, чем нижнее ограничение (30). Проблема с этим подходом заключается в том, что при 3,5-дюймовом размере экрана автозапуск может выбрать только несколько ограничений нижнего приоритета - достаточно для удовлетворения макета, но оставит некоторые ограничения с высоким приоритетом.
- Подкласс NSLayoutConstraint. В этом методе все ограничения в раскадровке устанавливаются как NSDualLayoutConstraint. В коде инициализации NSDualLayoutConstraint константа ограничения изменяется на значение 3_5_constant, если размер экрана времени выполнения составляет 3,5 дюйма. Этот метод более детерминирован, но вы не можете увидеть 3.5-дюймовый макет в представлении конструктора интерфейса.
Если только ограничения компоновщика интерфейса имели вторичное постоянное значение, которое будет применяться, когда размер экрана составляет 3,5 дюйма, это решит мою проблему. Таким образом, я остаюсь с моим вопросом - как я могу правильно использовать один раскадровки для правильной компоновки своих подсмотров для размеров экрана 4 "и 3,5"?