Ограничение Autolayout Y между UITableView и UICollectionView - PullRequest
0 голосов
/ 18 мая 2018

У меня проблемы с ограничениями автопоставки.Я хочу иметь представление, которое организовано так: view organisation

Все содержащиеся представления имеют начальные и конечные ограничения для представления содержимого, никаких проблем там нет.Представление Wrapper имеет постоянную высоту, верхнее ограничение для ContentView.Представление коллекции имеет верхнее ограничение к нижней части оболочки, а TableView имеет верхнее ограничение к нижней части коллекции и нижнее ограничение к представлению Content.Проблема в том, что если я не установил фиксированную высоту для CollectionView, у меня возникли проблемы с авторазмещением.Но я не хочу, чтобы ни TableView, ни CollectionView имели фиксированную высоту.Любые идеи?

РЕДАКТИРОВАТЬ: забыл упомянуть, что ContentView может иметь динамическую высоту, я хотел бы, чтобы он соответствовал его содержанию.

Все ограничения: All constraint description

Спасибо

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Не устанавливая ограничения высоты ни для TableView, ни для CollectionView, вы не предоставляете механизму автоматического размещения достаточно информации для генерации макета.

Вероятно, лучший способ сделать это - использоватьпропорциональное ограничение высоты для коллекции или представления таблицы, таким образом, вы можете установить высоту в «нефиксированное» значение.

0 голосов
/ 18 мая 2018

Это довольно очевидно, так как механизм автоматического размещения не может определить y положение вашего представления таблицы.Даже если вы указали, что:

collectionview.bottom = tableview.top

это может быть практически в любом месте внутри вертикального пространства.

Вы должны иметь приблизительное представление о том, сколькопространство каждого из ваших просмотров контента занимают дети.Дайте им относительное ограничение по высоте.

Что-то вроде:

wrapper view.height = 0.3 * content view height
collection view.height = 0.35 * content view height
table view.height = 0.35 * content view height

Способ сделать это - установить равные ограничения по высоте для каждого в XCode, а затем изменить множители на 0,3, 0,35 и 0,35 с помощьювходя в каждое ограничение.

Само собой разумеется: Правило состоит в том, чтобы все множители суммировали до 1.

Это лучший подход, который не зависит от устройства.и вам не нужно делать это для каждого класса размеров.

У меня есть подробное руководство по основным принципам автоматического размещения, здесь .

0 голосов
/ 18 мая 2018

Одна вещь, которую вы могли бы сделать, это разделить оставшееся пространство после установки ограничения высоты для представления обертки между представлением коллекции и представлением таблицы.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...