Ответ 1
1) Горизонтальная прокрутка позволяет автоматически, когда ширина содержимого в scrollView больше ширины scrollView. Поэтому, чтобы избежать горизонтальной прокрутки, необходимо сделать ширину содержимого внутри scrollView меньше или равно ширине прокрутки.
Leading space
и trailing space
не могут устанавливать определенную ширину в представлениях, они просто растягивают их. В обычных представлениях они не растягиваются больше, чем ширина вида, но scrollView представляет собой особый вид, фактически, с бесконечной шириной содержимого. Следовательно, ограничения trailing space
и Leading space
в scrollView изменяют ширину представлений до их максимально возможных значений (в случае с UILabel вы можете видеть изменение размера для текста).
Чтобы избежать горизонтальной прокрутки, вам нужно установить определенную ширину каждого вида, меньше или равную ширине прокрутки. Конкретную ширину представлений можно установить с помощью width constraints
.
Вместо того, чтобы устанавливать каждую ширину окна, гораздо лучше добавить контейнер-представление и установить для него ширину, а внутри он поместить просмотры по мере необходимости.
Иерархия просмотров:
View
-> ScrollView
-> ContainerView
-> UILabel
-> UILabel
-> ... other views that you need
Ограничения автоопределения:
ScrollView
-> leading space to View : 0
-> trailing space to View : 0
-> top space to View : 0
-> bottom space to View : 0
Container View
-> leading space to ScrollView : 0
-> trailing space to ScrollView : 0
-> top space to ScrollView : 0
-> bottom space to ScrollView : 0
-> width equal to ScrollView : 0
Чтобы установить width equal constraint
ctrl + перетащить с containerView
на scrollView
.
2) Вертикальная прокрутка зависит от общей высоты содержимого. Пустое пространство может быть, если последний элемент внутри containerView
имеет большое значение bottom space to superview
.
Или вы имеете в виду эффект отскока? Вы можете отключить вертикальный откат scrollView.