Представление содержимого UIScrollView игнорирует ограничение ширины основного представления в Xcode 6

Я добавил представление с прокруткой, которое содержит представление содержимого. Ограничения scrollview держат его чуть ниже моего индикатора выполнения и прикрепляют к ведущему, замыкающему и низу супервизора. Ограничения представления содержимого удерживают его по сторонам от представления прокрутки с одним дополнительным ограничением: равной ширине супервизора.

В предварительном просмотре раскадровки все выглядит отлично, но во время выполнения расчетная ширина прокрутки увеличивается.

simulator

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

Вот мои ограничения:

xcode 1

Большое спасибо за то, что помогли мне преодолеть это препятствие! Я несколько дней бился головой об стену.


person Bdennis317    schedule 03.12.2014    source источник


Ответы (1)


Вот несколько вещей, которые я бы попробовал. У меня пока нет прав на комментирование, иначе я бы попросил пояснений:

  1. Есть ли какие-нибудь выходы в консоли для Xcode? Обычно, когда Autolayout вынужден нарушать ограничения, он сообщает вам об этом в журналах.
  2. Итак, для ясности: для Content View у вас есть ограничение, которое устанавливает ширину, равную ScrollView, а также ограничения для соответствия передним и задним краям ScrollView?

Если ограничение не соблюдается, либо ScrollView также каким-то образом расширяется, либо ограничение конфликтует с другим ограничением, и ограничение соответствия ширины было нарушено где-то по пути.

person eager to learn    schedule 03.12.2014
comment
1) В консоли нет выходов. Это не нарушает никаких ограничений. - person Bdennis317; 04.12.2014
comment
2) Эврика !! У меня НЕ было ограничения, которое устанавливало представление содержимого, равное ширине представления прокрутки. Вместо этого у меня было ограничение, которое устанавливало представление содержимого, равное ширине основного представления верхнего уровня (похоже, что другие руководства и даже некоторые технические примечания Apple поощряли этот подход. Как только я добавил указанное вами ограничение (равная ширина между представлением контейнера и представлением прокрутки) моя проблема была решена как по волшебству.Спасибо !!!! - person Bdennis317; 04.12.2014
comment
Ура! Рад помочь с минимизацией тряски головы :) - person eager to learn; 04.12.2014
comment
После того, как я бился головой о стену в течение 2 дней, я наткнулся на это, и это также решило мою проблему. Однако я не понимаю почему. В каждом учебнике говорится, что необходимо установить ограничение равной ширины для представления верхнего уровня, и это работает в этих демонстрациях. - person Joel; 19.05.2016
comment
@Joel, эти учебники тоже работали со ScrollViews? Насколько я понимаю, это дополнительное ограничение необходимо для ограничения размера ScrollView, который по самой своей природе будет расширять или изменять размер по мере необходимости. - person eager to learn; 22.05.2016
comment
В каждом учебнике и SO-ответе говорится, что нужно закрепить ширину просмотра содержимого в супервизоре прокрутки. И все они работают. Это очень странно. - person Joel; 22.05.2016