Comments 19
Будь зайкой, почикай обе картинки с полосатой пустотой на всю высоту экрана, пока тебя не покарали те, у кого каралка большая.)
+1
UFO just landed and posted this here
UFO just landed and posted this here
Калькуляция высоты ячейки в динамической таблице UITableView
Чего мелочиться, пишите сразу «Калькуляция хайта селла в динамик тэйбле UITableView».
+3
Недельный поиск???
+5
Странно, что на поиск решения у вас ушла неделя. Как по мне, так оно «гуглица» за несколько минут.
Касаемо кода:
И на последок, хотелось бы заметить, что это частный случай, когда ячейка состоит только из одного текстового поля. Для более сложных ячеек такой способ не подходит.
Касаемо кода:
UIFont* font = [UIFont systemFontOfSize:17.f];
Это серьезно? А если шрифт у Label в Story Board окажется другого размера или вообще другим? Про магическое число 320 вообще молчу.И на последок, хотелось бы заметить, что это частный случай, когда ячейка состоит только из одного текстового поля. Для более сложных ячеек такой способ не подходит.
+1
Статья по-большей части даже вредная. Как минимум, надо указать, что так никто не делает с тех пока, как появился autolayout.
В iOS 6-7 задают constraints и высчитывают высоту contentView методом -systemLayoutSizeFittingSize.
В iOS 7 появился доп. метод делегата таблицы -estimatedHeightForRowAtIndexPath, для приблизительного указания высоты.
Ну и счастливчики, разрабатывающие под iOS8+ могу использовать динамический подсчет величины просто указав
Хотя это не избавляет от проблем с многострочными UILabel. В довесок Apple не исправила баг с скачущими высотами ячеек при прокрутке вверх (тык).
В iOS 6-7 задают constraints и высчитывают высоту contentView методом -systemLayoutSizeFittingSize.
В iOS 7 появился доп. метод делегата таблицы -estimatedHeightForRowAtIndexPath, для приблизительного указания высоты.
Ну и счастливчики, разрабатывающие под iOS8+ могу использовать динамический подсчет величины просто указав
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = EstimatedRowHeight;
Хотя это не избавляет от проблем с многострочными UILabel. В довесок Apple не исправила баг с скачущими высотами ячеек при прокрутке вверх (тык).
+3
Статья — хлам. Уже давно считают высоту ячейки через AutoLayout.
0
И у вас не тормозит?
0
На сколько я знаю, через autolayout — считает очень медленно при сколь-нибудь сложном устройстве ячеек.
Я правда не очень понимаю, что означает
Ведь для этого ячейка должна быть создана, а высоту нужно передать до создания ячейки…
Я правда не очень понимаю, что означает
Уже давно считают высоту ячейки через AutoLayout.
Ведь для этого ячейка должна быть создана, а высоту нужно передать до создания ячейки…
0
При правильной настройки constraints и выставлении
TableView сам рассчитает размер ячейки, достаточный для ее отображения.
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = EstimatedRowHeight;
TableView сам рассчитает размер ячейки, достаточный для ее отображения.
0
Оно долго считает, если ячейки сложные. Так или иначе, приходится в ручную считать.
0
Что значит вручную? Без использования constraints?
Можно кэшировать уже рассчитанные высоты и в -estimatedHeightForRowAtIndexPath их возвращать.
Можно кэшировать уже рассчитанные высоты и в -estimatedHeightForRowAtIndexPath их возвращать.
0
Да, без использования констраинтов для расчета. Получается в разы быстрей.
0
На счет скорости вполне возможно, но хотелось бы увидеть приблизительный лэйаут на котором может сильно тормозить расчет высот.
Но как быть с ориентацией, и случаями, когда от размера зависит положение и размер элементов? Констреинты очень сильно в таких случаях помогают.
Но как быть с ориентацией, и случаями, когда от размера зависит положение и размер элементов? Констреинты очень сильно в таких случаях помогают.
0
Пример, когда это необходимо: гипотетическое новостное приложением; скажем новости делятся на 4-5 видов и в них используется UITextView (не фиксированной высоты) + до 20 различных view. Соотвественно высота ячейки зависит от высоты TextView (может еще быть несколько Label-ов не фиксированной высоты и ширины). Тогда будет тормозить, знаю на своем опыте.
Можно кэшировать, но все равно будет много глюков; т.к. при первичной прорисовке ячейка будет дергаться пытаясь вычислить правильную высоту. А это очень неприятный юзер экспириенс. В итоге придется считать вручную.
Да, когда поменяется ориентация — вам придется заново все пересчитывать и если лэйауты отличаются, то возни будет достаточно. Никто и не обещал, что будет легко:)
Можно кэшировать, но все равно будет много глюков; т.к. при первичной прорисовке ячейка будет дергаться пытаясь вычислить правильную высоту. А это очень неприятный юзер экспириенс. В итоге придется считать вручную.
Да, когда поменяется ориентация — вам придется заново все пересчитывать и если лэйауты отличаются, то возни будет достаточно. Никто и не обещал, что будет легко:)
0
4-5 новостей — это 4-5 ячеек с различной разметкой и reuseIdentifier.
20 вью — это в одной ячейке заголовка новости? Если так — то очевидны проблемы с интерфейсом.
Я сам сейчас делаю приложение с выводом множества ячеек с 3-5 label различной высоты. Использую Masonry и авторасчет высот. За раз показывается около 40-60 ячеек. Не тормозит даже на iPhone 5, на 4s — слегка.
20 вью — это в одной ячейке заголовка новости? Если так — то очевидны проблемы с интерфейсом.
Я сам сейчас делаю приложение с выводом множества ячеек с 3-5 label различной высоты. Использую Masonry и авторасчет высот. За раз показывается около 40-60 ячеек. Не тормозит даже на iPhone 5, на 4s — слегка.
0
А не подскажете гугл запрос, где можно посмотреть примеры 3-5 лейблов в ячейке.
Сколько не пробовал — не попадается более-менее подробного гайда.
Сам пользуюсь Masonry, но ячейки продолжают плясать через раз.
ЗЫ. аналогично хотелось бы посмотреть по поводу Section Header с автолайоутом.
ЗЗЫ. таргет сборки иос 7+
Сколько не пробовал — не попадается более-менее подробного гайда.
Сам пользуюсь Masonry, но ячейки продолжают плясать через раз.
ЗЫ. аналогично хотелось бы посмотреть по поводу Section Header с автолайоутом.
ЗЗЫ. таргет сборки иос 7+
0
Sign up to leave a comment.
Калькуляция высоты ячейки в динамической таблице UITableView