UIScrollView + Централизованный просмотр + Неоднозначный размер прокручиваемого контента + много размеров iPhone
У меня есть:
- которое должно работать в ландшафтном и портретном режимах.
- просмотр с полноразмерным просмотром прокрутки вверху.
- некоторый вид внутри прокрутки с фиксированной шириной и высотой. (с добавлением ограничений H и W)
- для просмотра внутреннего вида прокрутки в горизонтальном положении в контейнере. (добавлено ограничение)
У меня есть предупреждение в построителе интерфейса "Имеет неоднозначную ширину прокручиваемого содержимого".
![enter image description here]()
Единственный способ исправить эту проблему, о которой я знаю, - это установить конечные и ведущие ограничения.
Но для разных iPhones (5.5 ", 4.7", 4 ") мне нужно установить разные конечные и ведущие ограничения.
Как я могу устранить это предупреждение и все еще иметь горизонтальное представление с фиксированными W и H для всех размеров iPhone?
Я создаю репозиторий Github, чтобы проиллюстрировать эту проблему: ScrollViewAmbigous
Это не дубликат UIScrollView Scrollable Content Size Ambiguity
, но он похож (и не ответил хотя), но этот вопрос особенно связан с разными размерами iPhone'ов.
Ответы
Ответ 1
Утром со свежей чашкой кофе я выяснил обходное решение для этой проблемы!
Итак, вот начальное состояние для простейшего случая:
- scrollView с 0 ограничениями для всех ребер
- Кнопка с центром по горизонтали и вертикали с фиксированной шириной и высотой
- И, конечно,
Has ambiguous scrollable content width
и Has ambiguous scrollable content height
раздражающие предупреждения.
![1]()
Все, что нам нужно сделать:
- Добавьте еще 2 дополнительных ограничения, например "0" для конечного и/или нижнего пространства для нашего представления (в моем случае - UIButton)
Важно: вам нужно добавить ограничения трейлинг и/или снизу. Не "ведущий и верхний" - он не работает!
![2]()
Вы можете проверить это в моем примере проекта, демонстрируя, как исправить эту проблему: ScrollViewAmbigous
P.S.
Я не знаю, почему это работает и как Xcode обнаруживает, какое ограничение более приоритетно (потому что я не задал приоритет для этих ограничений), но я буду благодарен, если кто-нибудь объяснит, почему он работает в комментариях ниже.
Ответ 2
Проблема:
- Предупреждение сообщает нам, что размер содержимого
scrollview зависит от его подзонов.
- в то время как ваш subview не имеет строгого правила положения и размера (без фиксированных ограничений), он будет путать сгенерированный прокруткой nib
размер содержимого.
Решение: