Почему UITableViewCell перекрывают друг друга? - PullRequest
1 голос
/ 20 марта 2019

У меня есть простой UITableViewCell, который содержит UIImageView и 3 UILabel.Здесь я предоставляю обычный вид ячейки, чтобы глубоко понять проблему:

enter image description here

Как вы заметили, метка описания может быть длинной, поэтому яустановите numberOfLines в 0. Но проблема возникает, когда это описание пустое или маленькое.Клетки начинают перекрывать друг друга.Вот как это выглядит, когда описание пустое или маленькое: enter image description here

Если вы заметили, изображения накладываются друг на друга.Ограничения, которые я дал для представлений, следующие:

  • UIImageView: ведущий к суперпредставлению, ширине и высоте, центру по вертикали

  • BookName ( полужирный шрифт сверху ): сверху и в конце к суперпредставлению, ведущий к UIImageView

  • AuthorName ( оранжевая метка ): сверху к BookName, трейлинг к суперпредставлению, ведущий к UIImageView

  • Описание ( серая метка ): трейлинг и низ к суперпредставлению, сверху к AuthorName и ведущему к UIImageView (книжное изображение)

Я также предоставил Content Hugging and Compression Resistance Priorities.Я предоставил их только для UILabel.Я установил наименьшую метку для описания, чтобы она росла и уменьшалась.

Что я сделал для решения проблемы?

Я понял, что если описание пустое, ячейка становится меньше.Другими словами, метки определяют размер ячейки.Кроме того, учитывая тот факт, что UIImageView центрируется только по вертикали, я подумал, что мои ограничения неверны.Итак, я решил избавиться от , центрирующего вертикально UIImageView .Я установил ограничения сверху, шириной, шириной и высотой только для UIImageView.Другие ограничения были такими же, как указано выше.Но это не помогло, вот результат:

enter image description here

Как видите, UIImageView выходит за границы ячейки.Я думал, что это происходит, потому что я не предоставляю нижнее ограничение для UIImageView.Но я предоставляю это для описания.Итак, следующая попытка фактически предоставила это нижнее ограничение.Итак, я предоставил ограничения top, left, bottom и width для UIImageView.Я оставил другие ограничения такими же.Изначально результат меня удивил.Вот как выглядят ячейки, когда нет описания: enter image description here

Похоже, все хорошо (во всяком случае, изображение слишком маленькое, оно пытается соответствовать размеру ячейки, то естьконтролируется метками), но после прокрутки UITableView ячейки меняют свои размеры и каким-то образом обновляют свои ограничения.Вот что произошло:

enter image description here

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

1 Ответ

1 голос
/ 20 марта 2019

Сохраняйте ограничения на представление «Изображение» как ведущие к суперпредставлению, ширине, высоте по центру по вертикали. Сохраняет ограничения на название книги и авторский ярлык как есть. Теперь на метке сведений поместите ограничение как верхнюю к метке автора, тянущаяся к суперпредставлению, ведущую или левую к просмотру изображения, низ к суперпредставлению . Для ограничение снизу до суперпредставления на метке детализации изменить отношение на больше или равно в Инспекторе атрибутов. Измените константу на нужное вам значение. Я предлагаю увеличивать константу и тестировать, пока не получите желаемый результат. Начните с чего-то около 20 или 30 и протестируйте, а затем увеличивайте значение до чего-то еще, пока не получите желаемый эффект. При некотором значении этой константы вы получите эффект. Надеюсь это поможет.

ПРИМЕЧАНИЕ. Предполагается, что на ярлыке с названием вашей книги и на ярлыке автора хотя бы есть текст. Он может давать сбой на других устройствах, поэтому также используйте классы размеров для установки других ограничений

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