Я хочу установить высоту первого заголовка в моем 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)
55.5
38
Для swift 4.2 вы должны вернуть UITableView.automaticDimension
Чтобы получить высоту по умолчанию, просто позвольте super обработать ее:
super
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) return kFirstHeaderHeight; return [super tableView:tableView heightForHeaderInSection:section]; }
Я не уверен, что правильный ответ здесь, но ни 10, ни 22 не кажутся правильной высотой для сгруппированного табличного представления в iOS 5. Я использую 44, основываясь на this вопрос, и он, по крайней мере, кажется примерно правильной высоты.
Это должно сработать
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.section == CUSTOM_SECTION) { return CUSTOM_VALUE; } return [tableView rowHeight]; }