2015-02-15 5 views
1

Здравствуйте Я пытаюсь настроить Scrollview в раскадровке и последовали следующие шаги, чтобы сделать это:UIScrollView не работает с раскадровки

  1. добавить Scrollview к просмотру корневого каталога.
  2. Вывод нулевых пространств ко всем краям супер-представления.
  3. добавить UIView (contentView) к вышеуказанному списку прокрутки.
  4. контактных нуль пространства для всех краев Scrollview добавить некоторые виджеты contentView и изменить высоту contentView до 2000

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

Может кто-нибудь объяснить шаг за шагом, как настроить прокрутку в раскадровке?

Мои сдерживает: constrains for scrollview

+0

Предполагаете, что вы хотите, чтобы 'contentView' был такой же ширины основного вида? И я предполагаю, что вы добавили ведущие/трейлинг-ограничения для 'contentView' в' UIScrollView'. Проблема в том, что эти ограничения просто корректируют 'contentSize' прокрутки, а не размер' contentView'. В нижней строке вы должны добавить ограничение между этим 'contentView' и' superview' 'UIScrollView'. См. Http://stackoverflow.com/a/22772106/1271826. – Rob

+0

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

+0

Да, contentView должен быть таким же, как и mainView. – Kingalione

ответ

1

ОК, давайте представим себе следующую иерархию зрения (обратите внимание, глядя на ограничения в Interface Builder легче, если вы даете эти взгляды уникальные имена в разделе «Документ» из «Идентичность инспектор "):

enter image description here

чтобы установить, что вы хотите добавить следующие ограничения в IB (я justing буду писать его в VFL, потому что это очень лаконичный способ показать ограничения) :

  1. Очевидно, что определение прокрутки вида по отношению к его надтаблицы (главный вид, в этом примере):

    H:|[scrollView]| 
    V:|[scrollView]| 
    
  2. Определить, contentView такое, что

    • Это ширина такая же, в качестве основного вида (==view) и

    • Проспект прокрутки contentSize изменится в соответствии с размером contentView. В отношении TN2154 ограничения между scrollview и его подзонами определяют вид прокрутки contentSize, а не относительный размер подзонов.

    Таким образом:

    H:|[contentView(==view)]| 
    V:|[contentView]| 
    
  3. Определить макет для трех меток таким образом, чтобы они смещенные в contentView:

    H:|-[label1]-| 
    H:|-[label2]-| 
    H:|-[label3]-| 
    
  4. Вместо жесткого кодирования высоты contentView (и, следовательно, contentSize прокрутки, вместо этого просто определите отношение метки к вертикальной высоте contentView, который (из шага 2, выше), регулирует вертикальную высоту contentSize в представлении прокрутки:

    V:|-[label1]-[label2]-[label3]-| 
    

Это все, что вам нужно сделать. Я не кодировал какую-либо ширину (основной вид имеет ширину автоматически, и как вид прокрутки, так и, что более важно, contentView определяют их ширину, связанную с этим. Но ширина меток является вставкой из contentView и высотой contentView (и, таким образом, вид свитка contentSize) выводится из внутренней высоты трех меток

Конечным результатом является то ограничения в ИБ, которые выглядят как:.

enter image description here


FYI, если вы хотите для диагностики, вы можете нажмите на кнопку отладки в то время как приложение работает на тренажере:

enter image description here

Вы можете увидеть вид (и, при необходимости ограничения) и убедитесь, что все выглядит нормально:

enter image description here

Вы также можете посмотреть на _autolayoutTrace через (lldb) строки:

(lldb) po [[UIWindow keyWindow] _autolayoutTrace] 

UIWindow:0x7fbbb3617910 
| •UIView:0x7fbbb349a840 
| | *UIScrollView:0x7fbbb3491c80 
| | | *UIView:0x7fbbb348e180 
| | | | *UILabel:0x7fbbb348e450'Label' 
| | | | *UILabel:0x7fbbb3490670'Label' 
| | | | *UILabel:0x7fbbb3490a70'Label' 
| | | UIImageView:0x7fbbb34a3eb0 
| | | UIImageView:0x7fbbb34a3800 
| | *_UILayoutGuide:0x7fbbb349a970 
| | *_UILayoutGuide:0x7fbbb349b460 

Это подтверждает, что нет противоречивых макетов и нет двусмысленных макетов.

+0

большое спасибо. Теперь работает – Kingalione

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