Прежде всего, ограничения, применяемые к представлениям внутри ScrollView, немного, скажем, особенные.Они не связаны с фреймом ScrollView, они в некотором роде связаны с «contentSize» ScrollView.Обычно, если у вас будет представление внутри другого представления, а внутреннее представление закреплено во всех направлениях к суперпросмотру, оно будет либо растягиваться, чтобы соответствовать родительскому размеру (если родительские ограничения четко определены для другого родителя), либоparent будет «переносить» размер дочернего элемента, если родительские ограничения не определены относительно другого родителя.
Теперь ScrollView ведет себя немного иначе, в этом случае размер ScrollView никогда не будет «переносить» дочерний элемент.Дочерние ограничения добавляются просто для того, чтобы сообщить ScrollView, что такое область прокрутки (contentSize).
Более того, в вашем случае UITableView, вы можете думать о нем как о «специальном» ScrollView, не может обеспечить достаточноинформация для ScrollView для вычисления scrollableContent.Если вы прикрепите tableView во всех направлениях, он просто скажет TableView: «выровнять по родительскому элементу во всех направлениях», но представление прокрутки не будет знать «сколько я могу прокрутить».
Так что из-заПри рассмотрении вышеупомянутой проблемы вы обычно добавляете UIView внутри ScrollView, чтобы действовать как «контейнер», и в зависимости от scrollDirection вы устанавливаете ширину / высоту представления равными ScrollView или родительскому элементу scrollView (опять же, в зависимости от использованиядело).Затем весь контент, которым вы хотите быть внутри scrollView, добавляется в UIView.Кроме того, содержимое закреплено таким образом, что оно не позволит «сжатию» принудительно растянуть родительское представление (иначе контейнер), чтобы «обернуть» все содержимое, таким образом, прокрутка будет знать, сколько стоит прокрутка.area.
ScrollView не должен быть двусмысленным, потому что TableView должен вычислять свой собственный размер внутреннего содержимого?
Это неверный внутренний размер контента, определяющий минимальный размер, который необходим представлению для рисования.Подумайте об этом, сколько места нужно табличному представлению для рисования, если никакая другая специальная реализация не добавлена, ответ равен 0. TableView может иметь ширину / высоту 0, для этого нет ограничений.
Теперь, чтобы подвести итог, ваша реализация немного ошибочна, чтобы ее исправить, я предлагаю поближе познакомиться с одним из множества учебных пособий, в которых показано, как реализовать UIScrollView с автоматической компоновкой.Вы увидите, что большинство реализаций будут:
- добавить UIView внутри UIScrollView (он же "containerView)
- , тогда представление будет прикреплено во всех направлениях к UIScrollView
- , тогда либо ширина, либо высота контейнера будут установлены равными scrollView или родительскому элементу представления прокрутки
- , тогда содержимое будет добавлено в "containerView"
- тогда к контенту будут применены ограничения таким образом, что контейнер должен будет обернуться вокруг контента.