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


166

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

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

Ответы:


361

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

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


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 пикселя, это полезный метод, если в приложении используется значение по умолчанию.


3
Был переименован UITableView.automaticDimensionsв Swift 4
Bot

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

16

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


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

10

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

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

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


Это проблематично с
автопрокладкой

27
Все проблемно с автопрокладкой.
devios1

проблематично как, точно?
AndrewR

3

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


2

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


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

2

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

UITableView.automaticDimension

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.