Не корректное отображение ячейки


#1

Всем привет! Есть экран с таблицей,в которой присутствуют ячейки. Я что то сделал не так и теперь у меня некорректно отображается последняя ячейка - перекрывает часть предпоследней и сама не полностью отображается
Изначально было вот так
http://joxi.ru/E2pj5l1T9aKLbr
Потом(после каких то моих манипупяций) стало вот так
http://joxi.ru/J2bREvVtXG3NE2

Сonstraints стоят одинаковые
для “правильной” кнопки http://joxi.ru/J2bREvVtXG37E2
для “неправильной” http://joxi.ru/Dr8XebyU4zN8zr

Размер для ячейек в обоих случаях стоит одинаковый 87
Если для предпоследней ячейки изменить размер с 47 до 60 кнопка влазит,но не отображается надпись http://joxi.ru/brR1O75SJY09EA

Что предпринимал:

  • Удалял полностью ячейку,потом заново добавлял через Attribute inspector-Prototype cells,
  • копировал предпоследнюю и вставлял, кидал новую ячейку из Object library
  • вставлял пустую ячейку между моими
  • изменял размеры последней ячейки, отступы и размеры для кнопки

Проверял на симуляторе и устройстве

В чем я ошибся?Куда смотреть?


#2

Там для корректного отображения нужно выставить высоту ячейки (cell) и у самой tableView есть высота, её нужно такую же потавить


#3

А если в нормальном проекте это не выставлялось и все работало? Просто у меня 5 ячеек и размере не везде одинаковые


#4

Покажите весь скрин из IB с вашим экраном. У вас явно что-то не верно выставлено в размерах.


#5

Это имеете в виду?
http://joxi.ru/gmv0ZkvHL1yQjA


#6

Проверил в Debug View Hierarchy и там не устанавливается значение в мой второй лейбл “Я согласен с Правилами проживания в отеле”. А что с этим делать?


#7

В консоле выводит предупреждение

>     (
>     "<NSLayoutConstraint:0x60400028c620 UIView:0x7f8a99c5e520.height == 157.5   (active)>",
>     "<NSLayoutConstraint:0x60400028cdf0 V:[UIView:0x7f8a99c5e520]-(4)-|   (active, names: '|':UITableViewCellContentView:0x7f8a99c5e320 )>",
>     "<NSLayoutConstraint:0x60400028ce40 V:|-(4)-[UIView:0x7f8a99c5e520]   (active, names: '|':UITableViewCellContentView:0x7f8a99c5e320 )>",
>     "<NSLayoutConstraint:0x60400028d160 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7f8a99c5e320.height == 165.667   (active)>"
> )

Это может как то помочь?


#8

Попробуйте выставить в коде

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 87

#9

Стоит изначально вот так
self.customTableView.rowHeight = UITableViewAutomaticDimension;
self.customTableView.estimatedRowHeight = 130;


#10

Для эксперимента поставьте в ячейке с кнопкой галочку Clips to bounds и запустите приложение. Если кнопка обрежется, тогда в этой ячейке кнопка не отпозиционирована и она перекрывает предыдущую ячейку.


#11

не помогло.все как было так и осталось. сейчас размер ячейки,которая некорректно отображалась,60


#12

Попробуйте выставить для предпоследней ячейки высоту в IB и проверьте констрейнты внутри ячейки.


#13

Высота ячейки выставлена на 60
Констрейнты внутри http://joxi.ru/5mdOpwYUk8v8or


#14

Ради интереса добавил еще один лейбл с такими же размерами поверх моего “Я согласен с Правилами проживания в отеле”
И вот что получил
http://joxi.ru/krD6edliE40db2


#15

Я уже сам запутался. Это новый лейбл залез на ячейку с “Я бронирую для себя”?


#16

Проблема была очень простой((( Как оказалось, я неправильно сделал перевод для английской версии и из за этого в мой лейбл приходил null. В обоих версиях в строке было подчеркивание текста(показывая что это переход на другой контрол с документацией). В русской версии это место выглядело как "Правилами проживания в отеле", в английской версии у меня было "terms&condition".
Но почему кнопка Book не учитывала imageView и налазила на ячейку пока не пойму.

Совет всем - смотрите на правильность перевода