Ошибки компоновки при закреплении краев UIView в UITableViewCell contentView - PullRequest
0 голосов
/ 16 января 2020

У меня есть проблема, которая сводит меня с ума.

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

Всякий раз, когда я делаю это, я получаю следующие ошибки макета для UIView в XCode:

"Необходимые ограничения для: X позиция, ширина"

" Нужны ограничения для: Y позиции, высота "

Problematic UIView

View hierarchy

Ограничения на это представление (Superview - contentView):

UIView constraints

В раскадровке у меня есть следующий набор в представлении таблицы:

  • Высота строки: автомат c
  • Оценка (высота строки): 50

Table view settings

А на ячейка табличного представления:

  • Высота строки: 50

Table view cell settings

Я видел несколько сообщений SO и другие пошаговые руководства, в которых утверждается, что скрепление краев - это то, что нужно делать, и, как я понимаю, автоматическое расположение, я предоставил необходимые ограничения и информацию.

Как это исправить?

(Кстати : Я использую Xcode 11.3.1.)


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

Ответы [ 2 ]

2 голосов
/ 16 января 2020

UIView само по себе не имеет intrinsicSize - поэтому вы указываете содержимому ячейки contentView прикрепляться к кадру 0 x 0.

Если вы собираетесь добавить содержимое в UIView, установите ограничения на содержимое, чтобы контролировать размер представления, и ошибки будут go исчезать.

Тем временем, дать представлению ограничение высоты, и это решит проблему.


Редактировать

Для ячеек с фиксированной высотой ... попробуйте запустить fre sh.

  • Добавить представление таблицы - дать ему необходимые ограничения
  • Добавление прототипа ячейки табличного представления
  • Добавление UIView к этой ячейке (для облегчения просмотра выберите цвет фона)
  • Ограничьте представление в нуле со всех 4-х сторон (с ограничениями по полям)
  • Установите для высоты строки ячейки значение 50 (снимите флажок Automati c)

Вот как это выглядит для меня:

enter image description here

enter image description here

enter image description here

0 голосов
/ 16 января 2020

Оказывается, у меня были правильно настроены табличное представление, ограничения и настройки ячеек; проблема была еще выше в иерархии представлений.

Представление таблицы было помещено в вертикальное представление стека, а свойство Alignment этого представления стека было установлено на center (для удобства других представлений в стеке). Это вызывало проблемы при автоматическом размещении при расчете width табличного представления.

Решение здесь заключалось в добавлении ограничения Equal Widths из табличного представления в представление стека. Et voila! Ошибки в UIView в представлении содержимого ячейки табличного представления исчезли.

Fixer constraint

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