Я настраиваю интерфейс приложения iOS из Interface Builder. У меня есть несколько горизонтальных представлений стека, все они встроены в одно вертикальное представление стека. До сих пор макет кажется нормальным, а ограничения хорошо выполнены.

Когда я встраиваю вертикальное представление стека в UIScrollView, макет становится очень плохим. Вероятно, что-то не так с моими ограничениями макета, но я действительно не знаю, что. Вот два изображения, которые представляют макет до и после встраивания в UIScrollView:

Before UIScrollView

After UIScrollView

Кто-нибудь знает, почему это происходит? Заранее спасибо, ребята.

Обновить

После установки этого ограничения:

VerticalStackView.width == ScrollView.width

Результат следующий:

VerticalStackView.width == ScrollView.width img

Обновление 2

After the addition of the basic constraints

4
pairon 9 Июн 2018 в 18:27

1 ответ

Лучший ответ

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

  • ScrollView.top == View.top
  • ScrollView.leading == View.leading
  • ScrollView.bottom == View.bottom
  • ScrollView.trailing == View.trailing
  • ContentView.top == ScrollView.top
  • ContentView.leading == ScrollView.leading
  • ContentView.bottom == ScrollView.bottom
  • ContentView.trailing == ScrollView.trailing
  • ContentView.width == ScrollView.width
  • VerticalStackView.top == ContentView.top + 16
  • VerticalStackView.leading == ContentView.leading + 16
  • VerticalStackView.bottom == ContentView.bottom - 16
  • VerticalStackView.trailing == ContentView.trailing - 16

Вместо View в первых четырех ограничениях вы также можете использовать SafeAreaLayoutGuide (в зависимости от ваших потребностей).

setup

3
André Slotta 9 Июн 2018 в 16:06