Добавление разделителя в табличное представление вызывает ошибку компоновки - PullRequest
0 голосов
/ 24 сентября 2019

У меня проблема с показом простой ячейки в UITableViewController.Моя клетка содержит только UIImage.Изображение имеет верхнее, начальное и нижнее пространство 20. Высота и ширина изображения равны 60.

Я продолжал получать следующую проблему NSLayoutConstraint.

"<NSLayoutConstraint:0x600001d6e030 UIImageView:0x7f8a37c218c0.height == 60   (active)>",
"<NSLayoutConstraint:0x600001d6d9a0 V:|-(20)-[UIImageView:0x7f8a37c218c0]   (active, names: '|':UITableViewCellContentView:0x7f8a37c1bb70 )>",
"<NSLayoutConstraint:0x600001d6c280 V:[UIImageView:0x7f8a37c218c0]-(20)-|   (active, names: '|':UITableViewCellContentView:0x7f8a37c1bb70 )>",
"<NSLayoutConstraint:0x600001d6f430 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7f8a37c1bb70.height == 100.333   (active)>"

Я не добавил последний сам.Вероятно, он автоматически генерирует высоту всего вида.

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

self.tableView.separatorStyle = .singleLine

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

Я уже пытался добавить AutomaticDimention и оценка RowHeight без успеха

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

1 Ответ

0 голосов
/ 24 сентября 2019

Изображение имеет верхнее, начальное и нижнее пространство 20. Высота и ширина изображения - 20.

В этом проблема.Нет необходимости устанавливать верх и низ вдоль высоты

Это можно решить с помощью

  • Сохраняйте фиксированную высоту

  • Снимите верхнюю и нижнюю

  • Установите CenterY для ImageView и CenterY для ячеек равными


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 60 // top 20 + imageView 20 + bottom 20 
    }

или

  • сохраняйте верхние и нижние ограничения и удаляйте высоту, сохраняйте только ширину

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
       return 60 // top 20 + imageView 20 + bottom 20 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...