2015-04-10 4 views
1

У меня есть UIButton и UILabel , который должен быть стандартным расстоянием от нижней части Superview. Хорошо работает на iPad, но на небольших экранах iPhone, когда другие элементы занимают слишком много места, эти представления выталкиваются с края экрана, несмотря на то, что их ограничение остается стандартным расстоянием от дна. Почему это так?Ограничение интервала между автозапусками не соблюдается

То, что я хотел бы иметь, состоит в том, чтобы четыре прямоугольника уменьшались в размерах, чтобы по-прежнему было место для метки «Назад» и «Вопрос», чтобы оставаться стандартным расстоянием от основания. Четыре прямоугольника могут поддерживать соотношение сторон и равную ширину/высоту, уменьшая при этом одинаковое соотношение. У меня нет ограничений на то, что они должны быть равны или превышать определенный размер. Я также попытался снизить свой приоритет сжатия содержимого.

Конфигурация:

AutoLayout Explanation

(я также пытался "равно" и "< =" в верхнем расстоянии между "Go Back" & нижних левым прямоугольником) ("больше или равно" работ лучше на IPad держать «Go Back» в нижней части экрана)

Как это выглядит на iPhone 6 и iPhone 6+ - с этикетками отрезать снизу: AutoLayout on Device

+0

Ваши горизонтальные ограничения от левого края до взгляда на правый край, по существу, дают им фиксированную ширину (относительно любого видимого размера), а соотношение сторон затем фиксирует высоту. – rdelmar

+0

Но что, если горизонтальные ограничения на левом и правом краях также установлены на> = стандартное расстояние расстояния, которое должно позволить им сжиматься ... – RanLearns

ответ

1

Вы пытались снизить приоритет ограничения этих четырех кнопок? Например, как это, попробуйте установить их 750

enter image description here

+0

Спасибо, что постарались помочь. Эти кнопки не имеют ограничений по высоте, они просто установлены на равную ширину и высоту, как и другие кнопки, но без требуемого размера – RanLearns

+0

, чтобы вы не добавляли ограничение по высоте ни одному элементу в представлении? если вы не добавили ограничение ширины по высоте, автоматический макет может не работать –

+0

, если вы не возражаете, вы можете создать простой проект с этой настройкой вида в файле раскадровки и поделиться им со мной.Я могу помочь вам разобраться в этом: D –

1

Вы можете сделать эту работу с несколькими изменениями и дополнениями. Дайте ведущим и конечным ограничениям между двумя верхними двумя прямоугольниками, а супервизор - более низким приоритетом (я использовал 749), но сохраняю их как «равными». Это позволит сохранить их на стандартном расстоянии от краев, если это возможно, но позволит им иметь большее расстояние, если это требует вертикальное пространство в сочетании с соотношением сторон. Проблема с этим заключается в том, что, поскольку они больше не требуются, когда эти ограничения нужно растягивать, нет ничего, что говорит, что они должны растягиваться одинаково; поэтому нам нужно каким-то образом сохранить прямоугольники в центре. Таким образом, вместо ограничения расстояния между левым и правым верхними прямоугольниками добавьте небольшое представление (я использовал 8x8), у которого есть ограничение по центруY к одному из прямоугольников, и нулевые постоянные ограничения расстояния для двух прямоугольников. Дайте этому представлению ограничение centerX для супервизора; эта конструкция даст вам одинаковое расстояние между вашими прямоугольниками, которые у вас были до этого, но сохранит их в центре просмотра, позволяя им сжиматься по ширине (и высоте, чтобы сохранить соотношение сторон), если это необходимо для размещения вертикального пространства.

+0

Хорошее предложение по использованию небольшого представления, сосредоточенного на двух элементах по обе стороны от центра (это кажется намного проще, чем использование двух скрытых представлений на краях, как показано в CS 193P и других учебниках). – RanLearns

+0

По-прежнему в основном касаются & go/trial & error для меня, пытаясь получить сцены авто-макета, которые выглядят «близко к правой» на каждом устройстве. Чаще, чем нужно, я создаю различные константы для обычных классов размера по высоте против компактной высоты, чтобы заставить ограничения действовать надлежащим образом на разных устройствах. – RanLearns

Смежные вопросы