Какая высота по умолчанию для UITableViewCell?

166

Я думал, что эту информацию было бы легче найти :-)

Какова высота UITableViewCell по умолчанию? Это выглядит как 44 пикселя, но я бы предпочел быть уверенным.

обкрадывать
источник

Ответы:

361

Это 44 пикселей. Определенно. Я никогда не забуду этот номер.

44px также высота по умолчанию для UIToolbar и UINavigationBar. (Оба переключаются на 32px, когда автоматически поворачиваются в горизонтальной ориентации.)

Marco
источник
61
Ха-ха, «Я никогда не забуду это число» звучит зловеще ;-)
Роб
4
@antony: view.bounds.size.height
samvermette
4
@MikeyWard: Вы, наверное, уже поняли это, но разделитель 1px включен в высоту. Это фактически покрывает самый нижний контент ячейки.
Бен С
44
Технически, это 44 балла. На дисплее Retina он будет отображаться до 88px. Не разбивать волосы или что-нибудь.
Бен Мошер
23
tableView.rowHeight
Охотник
27

Если вы хотите использовать измерение по умолчанию на любом устройстве, вы можете использовать: UITableViewAutomaticDimension

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

Хотя в настоящее время по умолчанию используется значение в 44 пикселя, это полезный метод, если в приложении используется значение по умолчанию.

simon_smiley
источник
3
Был переименован UITableView.automaticDimensionsв Swift 4
Bot
Это всегда работает, только если вам нужна только высота по умолчанию. Если вы действительно хотите получить кратное высоты по умолчанию, то возвращаемое значение не является фактической высотой. Apple скрыла истинную высоту точки за этим магическим числом (которое оказывается -1).
PKCLsoft
16

Когда style = UITableViewStyleGrouped, по умолчанию высота верхней и нижней ячеек на самом деле 45.0f(не 44.0f). И, если сгруппированная таблица - только одна строка, высота ячейки будет 46.0f.

ma11hew28
источник
это в том числе разделитель?
июня
10

Если вы хотите вычислить это на лету, просто выделите пустую ячейку таблицы и считайте ее высоту

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
int height = cell.frame.size.height ;

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

brainjam
источник
Это проблематично с
автопрокладкой
27
Все проблемно с автопрокладкой.
devios1
проблематично как, точно?
AndrewR
3

«Когда style = UITableViewStyleGrouped, высота по умолчанию для верхней и нижней ячеек на самом деле составляет 45.0f (не 44.0f). И, если сгруппированная таблица занимает только одну строку, высота ячейки будет 46.0f». Это не правильно!! 44.0f на самом деле! Я просто проверяю это!

откровенный
источник
2

Это звучит примерно так. Но чтобы быть уверенным, что вы можете загрузить Интерфейсный конструктор, поместите UITableViewCell в проект, а затем проверьте свойства размера в окне инспектора. У меня нет моего MacBook, поэтому я не могу проверить. Но если вы не получите лучшего ответа от кого-то, вы можете проверить это сами.

Ziltoid
источник
Ах, хорошо, вот откуда я изначально получил 44.
Роб
2

В Swift 4 и Swift 5 просто используйте:

UITableView.automaticDimension

Использование 44px не будет достаточным, потому что оно будет варьироваться в зависимости от плотности пикселей экрана.

Дэн Брей
источник
0

В iOS 12 высота по умолчанию на iPhone X-подобных устройствах (X, XS, XS Max, XR) составляет 49pt .

Другие устройства на iOS 12 по-прежнему имеют 44pt по умолчанию. Это тонкое различие, но это похоже на хорошее улучшение в прямом сравнении.

Если вы мне не верите, измерьте себя на этом скриншоте (не забудьте разделить на 3) ...;)

fl034
источник