Я попытался установить простой вид, который отображает текстовую статью с заголовком. Вот шаги, которые я сделал:Каков правильный способ использования UIScrollView?
- Create View Controller с его .xib файл
- Создать
UIScrollView
и помещаетUIView
непосредственно в качестве обертки содержимого, - Установите ограничения
[scrollview]-0-[superview]
в верхней части, нижней, ведущей и задней. - Установите ограничения
[content wrapper]-0-[scroll view]
сверху, снизу, впереди и позади. - Установите ширину и высоту в оболочку содержимого в качестве заполнителя.
- Добавить
Label
иUITextView
в качестве представлений оболочки содержимого. - Добавить ограничения в подвид.
- Следующее this tutorial, я программно устанавливаю вывод верхнего содержания обложки контента = scrollview влево,
- ... И верхний вид обложки обертки содержимого.
Когда я запускал код, он отлично показывает все на своем месте; В UIScrollView прокручивается, поля правильно установлены и т.д.
Однако Xcode генерирует исключение:
2015-02-05 18:06:58.230 ScrollViewApp[5353:180401] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7ff9fa49a3f0 H:[UIView:0x7ff9fa571560(600)]>",
"<NSLayoutConstraint:0x7ff9fa49b1a0 H:|-(0)-[UIView:0x7ff9fa571560] (Names: '|':UIScrollView:0x7ff9fa49a910)>",
"<NSLayoutConstraint:0x7ff9fa49ce00 H:|-(0)-[UIScrollView:0x7ff9fa49a910] (Names: '|':UIView:0x7ff9fa49a840)>",
"<NSLayoutConstraint:0x7ff9fa61c050 UIView:0x7ff9fa571560.right == UIView:0x7ff9fa49a840.trailing>",
"<NSLayoutConstraint:0x7ff9fa580970 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7ff9fa49a840(375)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ff9fa49a3f0 H:[UIView:0x7ff9fa571560(600)]>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
После дальнейшего прибегая к помощи, я обнаружил, что можно проигнорировать предупреждение, установив ширину содержимого обертку (см шаг 5 выше) приоритет - низкий; однако он разбивает макет в построителе интерфейса. Посмотрите:
По сравнению с тем, когда он установлен высокий приоритет:
Я знаю, что в конце концов, это не имеет никакого значения, потому что это работает, как ожидалось .. Но Мне любопытно, почему это происходит.
Я пытаюсь понять, как работает UIScrollView, но, может быть, я что-то не понимаю; так, Каков правильный способ настройки UIScrollView для работы, как ожидалось?
Попытка добавить центра по горизонтали ограничение от вашего контента обертку на ваш взгляд прокрутки. –
@JadFeitrouni, вы правы; он действительно решает проблему выше! Но я удивляюсь, почему, хотя .. Из журналов ошибок нет никакого способа правильно определить «Мне нужно добавить горизонтальное ограничение центра». Как лучше решить эти проблемы? – dvdchr
Честно говоря, я действительно не знаю, почему это работает, я понял, что это из-за ошибки. Если вы хотите, чтобы ваше представление совместимо с разными размерами экрана, удалите ограничение ширины обертки содержимого. –