Высота по умолчанию для заголовка раздела в UITableView
-
05-07-2019 - |
Вопрос
Я хочу установить высоту первого заголовка в моем UITableView.Для других заголовков я хочу, чтобы они оставались высотой по умолчанию.Какое значение/константу я могу поставить вместо «someDefaultHeight» в приведенном ниже коде?
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return kFirstHeaderHeight;
return someDefaultHeight;
}
Спасибо
Решение
В IOS 5.0 и более поздних версиях вы можете возвращать UITableViewAutomaticDimension в большинстве методов делегата.Он находится внизу страницы документации.
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == CUSTOM_SECTION)
{
return CUSTOM_VALUE;
}
return UITableViewAutomaticDimension;
}
Другие советы
Судя по проверке значений по умолчанию в моем приложении, для сгруппированной таблицы высота по умолчанию равна 22, а для несгруппированной таблицы высота по умолчанию — 10.
Если вы проверите значение свойстваsectionHeaderHeight в своем представлении таблицы, это должно вам сказать.
В общем, сделай свое дело :)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return kFirstSectionHeaderHeight;
return [self sectionHeaderHeight];
}
Для полноты картины:в iOS7+ высота заголовков разделов сгруппированного стиля равна 55.5
для первого и 38
для следующих заголовков.(измерено с помощью DCIntrospect)
Я не уверен, какой здесь правильный ответ, но ни 10, ни 22 не кажутся правильной высотой для сгруппированного представления таблицы в iOS 5.Я использую 44, исходя из этот вопрос, и, по крайней мере, он кажется примерно правильной высоты.
Чтобы получить высоту по умолчанию, просто позвольте super
справиться:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return kFirstHeaderHeight;
return [super tableView:tableView heightForHeaderInSection:section];
}
Для быстрой версии 4.2 вы должны вернуть UITableView.automaticDimension.
Это должно сработать
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section == CUSTOM_SECTION)
{
return CUSTOM_VALUE;
}
return [tableView rowHeight];
}