#ios #uiview #uiscrollview #constraints #autolayout
#iOS #uiview #uiscrollview #ограничения #автоматическое описание
Вопрос:
Я создаю приложение для вертикальной прокрутки, используя a UIScrollView
и three UIViews
. До сих пор я вручную устанавливал height
три вида и contentsize
вид прокрутки, используя storyboard
и некоторый простой код. Однако пришло время адаптировать его и для экранов с диагональю 3,5 дюйма.
Я пытался использовать autolayout
и устанавливать ограничения в раскадровке, но это не сработало слишком хорошо. Я получаю все эти ошибки / предупреждения об expected height=0 actual height=504
и scrollview has ambiguous scrollable content
.
Это моя настройка:
UIViewController {
UIScrollView {
UIView {content}
UIView {content}
UIView {content}
}
}
По сути, это то, чего я хочу добиться: содержимое внутри представлений привязано к определенным местоположениям в UIView, в котором они находятся. Довольно стандартный материал.
Теперь предполагается, что каждый из трех UIViews имеет размер экрана iPhone и расположен непосредственно друг под другом. Таким образом, один вид одновременно заполняет экран, и пользователь может перейти к следующему виду, который фиксируется в нужном положении. Размер UIScrollView должен соответствовать размеру экрана, однако высота contentsize должна быть высотой трех представлений вместе взятых.
Как я могу этого добиться? Я бы предпочел использовать решение с раскадровками, поскольку я привык размещать приложение там.
Любая помощь будет оценена!
Заранее спасибо!
Изображения:
Ответ №1:
Ожидаемая высота = 0 появляется, когда автозаполнение неправильно вычисляет ограничения. Вы всегда можете обновить ограничения таким образом, чтобы они принимали заданное вами значение. Также для выполнения вертикальной прокрутки размер содержимого должен быть изменен в коде. Вместо установки self.ScrollView.contentSize =CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height*5); в -(void)viewDidLoad попробуйте установить его в -(void)viewDidAppear