2017-01-02 3 views
0

С моим приложением я заметил, что между различными устройствами с iPhone SE> iPhone 7+, казалось, было лишнее пространство с правилами AutoLayout, которые я применял.Решение проблемы с адаптивной и жидкостной раскладкой

Лучший пример этого - изображение на экране приветствия, как вы можете видеть на изображении ниже. По мере того как устройство становится больше, пространство ближе к основанию становится больше, чтобы решить эту проблему, что я пытаюсь сделать, это нажать изображение вниз, чтобы разместить дополнительное пространство.

enter image description here

Чтобы устранить эту проблему, что я пытался сделать, это применить неравенство ограничение, которое приведет к увеличению пространства в верхней части представления изображения более чем 45pts, если это возможно, но я, кажется, получаю неравенство ограничения как вы можете видеть ниже.

enter image description here

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

enter image description here

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

ответ

1

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

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

Чтобы позволить вашему макету адаптироваться к разным высотам экрана, вы можете попробовать удалить верхнее ограничение и вместо этого выровнять изображение по вертикали со смещением от «центра Y» родительского представления, т.е. что-то вроде:

enter image description here

Или вы могли бы поместить все элементы в представлении обертки и выравнивать эту точку зрения к центру основного вида, в X и центр Y (если вы хотите его по центру, если не добавлять смещения).

Надеюсь, что имеет смысл и помогает!

0

Вот почему я использую только SnapKit.

Интерфейс Builder работает, но это огромная боль для управления. Если у вас есть ошибка, вы будете щелкать и указывать, а затем нажимать и указывать сотни раз, прежде чем вы обнаружите, что не так. Вы в конечном итоге должны быть чрезвычайно дисциплинированными, так как очень легко создать гигантский беспорядок ограничений в IB. И всякий раз, когда вам нужно больше контроля, вам все равно придется программно изменять ограничения в любом случае.

Не делайте свою жизнь тяжело. Используйте SnapKit и никогда не оглядывайтесь назад. Это бесплатно, с открытым исходным кодом и т. Д.

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