UIScrollView и Autolayout предотвращают сжатие содержимого

В IB у меня есть контроллер представления, содержащий прокрутку.

Красный вид находится внутри прокрутки

Минимальная высота красного представления составляет 504 пикселя, поэтому на iphone 4 он должен прокручиваться, а на iphone>=5 он должен расширяться и размещать кнопки, чтобы заполнить пустое место.

Я установил ограничения красного вида на 0 сверху, впереди, сзади и снизу прокрутки, а также по центру по горизонтали и вертикали. Мой redview имеет минимальную высоту 504

Синий и зеленый виды имеют одинаковую высоту

Все в порядке для iphone> = 5, но для iphone 4 красный вид сжимается до размера прокрутки, а кнопки касаются друг друга.

После нескольких корректировок ограничений мне интересно, возможно ли вообще сделать то, что я хочу, на 100% в IB с автомакетом

введите здесь описание изображения

iphone 4 !OK

iphone 6 OK


person Mathieu    schedule 11.02.2015    source источник


Ответы (1)


Вы говорите (выделено мной:)

«Я установил ограничения красного вида на 0 сверху, впереди, сзади и снизу прокрутки, а также отцентрировал по горизонтали и вертикали. Мой красный вид имеет минимальную высоту 504»

Во-первых, я вижу некоторую избыточность (жирная часть). Вашему redView не требуется вертикальное ограничение, поскольку вы уже прикрепили его к краям прокрутки и имеете определенную минимальную высоту.

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

Вы установили ограничения по вертикали для кнопок?

person joakim    schedule 11.02.2015
comment
Я установил ограничения по вертикали для синих представлений (минимальная высота 12 пикселей). И кнопки имеют ограничения по высоте 60 пикселей и 0 пикселей сверху и снизу от синих представлений. - person Mathieu; 11.02.2015
comment
удаление вертикального центрирования redview и прокрутки дало мне результат, который я хотел на iphone 4, но на iphone › 5 redview не растягивается до нижней части прокрутки - person Mathieu; 11.02.2015
comment
В недавней подобной ситуации я решил превратить redView в фоновое представление. Вы рассматривали такой вариант? Под этим я подразумеваю, что вы можете попытаться разместить redView снаружи и за прокруткой (над прокруткой в ​​иерархическом представлении IB). Вещи будет легче контролировать / следовать таким образом. - person joakim; 11.02.2015
comment
Или вы можете применять разные приоритеты для ваших ограничений в зависимости от того, какой из них вы хотите преобладать в сценариях, включающих разрешение конфликтов. - person joakim; 11.02.2015