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

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

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

Ответов (8)

Решение

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

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

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

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

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

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

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

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

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

    return UITableViewAutomaticDimension;
}

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

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

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

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

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

UITableView.automaticDimension

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

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