Я знаю, как изменить высоту заголовков разделов в виде таблицы. Но я не могу найти никакого решения для изменения интервала по умолчанию перед первым разделом.
Прямо сейчас у меня есть этот код:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0){
return 0;
}
return 10;
}
ios
uikit
tableview
uitableview
схема
источник
источник
Ответы:
Верните
CGFLOAT_MIN
вместо 0 для желаемой высоты секции.Swift 3:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.leastNormalMagnitude } return tableView.sectionHeaderHeight }
Swift:
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.min } return tableView.sectionHeaderHeight }
Obj-C:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) return CGFLOAT_MIN; return tableView.sectionHeaderHeight; }
источник
CGFloat.leastNormalMagnitude
estimatedHeightForHeaderInSection
, приложение выйдет из строя.Если вы используете сгруппированный
tableView
стиль , автоматически устанавливайте верхнюю и нижнюю вставки. Чтобы избежать их и избежать установки внутренних вставок, используйте методы делегата для верхнего и нижнего колонтитула. Никогда не возвращайте 0,0, но .tableView
CGFLOAT_MIN
Цель-C
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; }
Swift
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude }
источник
viewForHeaderInSection
заголовок полностью исчез.Похоже, что я не могу установить представление заголовка таблицы с высотой 0. В итоге я сделал следующее:
- (void)viewWillAppear:(BOOL)animated{ CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = 1; UIView *headerView = [[UIView alloc] initWithFrame:frame]; [self.tableView setTableHeaderView:headerView]; }
источник
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1.0f; }
У меня это сработало со Swift 4 . Измените,
UITableView
например, вviewDidLoad
:// Remove space between sections. tableView.sectionHeaderHeight = 0 tableView.sectionFooterHeight = 0 // Remove space at top and bottom of tableView. tableView.tableHeaderView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude))) tableView.tableFooterView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))
источник
Вы можете попробовать это:
в
loadView
_tableView.sectionHeaderHeight = 0;
затем
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0; }
Его следует удалить, пока в заголовке нет никаких объектов ...
А если вам нужен какой-то размер заголовка раздела, то измените только возвращаемое значение.
то же самое, если вы не удалили нижний колонтитул раздела.
_tableView.sectionFooterHeight = 0;
а также
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; }
Что ж, это работает для моих проблем с табличным представлением в iOS7.
источник
Вы должны удалить код
self.tableView.tableHeaderView = [UIView new];
после добавления- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return CGFLOAT_MIN; }
источник
footer
моем случае проблема возникает из-за высоты. Спасибо за помощь.вы можете использовать
viewForHeaderInSection
и возвращать вид с любой высотой.- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { int height = 30 //you can change the height if(section==0) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)]; return view; } }
источник
В быстрой версии 2.0
func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { return yourHeight }
источник
В Swift 4
Удалите лишнее верхнее заполнение в сгруппированном виде таблицы.
Здесь высота задается 1 как минимальная высота для заголовка раздела, потому что вы не можете указать 0, поскольку tableview будет использовать верхнее поле по умолчанию, если ему присвоена нулевая высота.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 1 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { return UIView() }
источник
Пример viewForHeaderInSection:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 118)]; view.backgroundColor = COLOR_DEFAULT; NSString* key = [self.tableKeys objectAtIndex:section]; NSArray *result = (NSArray*)[self.filteredTableData objectForKey:key]; SZTicketsResult *ticketResult = [result objectAtIndex:0]; UIView *smallColoredView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 3)]; smallColoredView.backgroundColor = COLOR_DEFAULT_KOSTKY; [view addSubview:smallColoredView]; UIView *topBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 320, 40)]; topBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:topBackgroundView]; UILabel *totalWinnings = [[UILabel alloc] initWithFrame:CGRectMake(10, 8, 300, 40)]; totalWinnings.text = ticketResult.message; totalWinnings.minimumFontSize = 10.0f; totalWinnings.numberOfLines = 0; totalWinnings.backgroundColor = [UIColor clearColor]; totalWinnings.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:totalWinnings]; UIView *bottomBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 55, 320, 58)]; bottomBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:bottomBackgroundView]; UILabel *numberOfDraw = [[UILabel alloc] initWithFrame:CGRectMake(10, 55, 290, 58)]; numberOfDraw.text = [NSString stringWithFormat:@"sometext %@",[ticketResult.title lowercaseString]];; numberOfDraw.minimumFontSize = 10.0f; numberOfDraw.numberOfLines = 0; numberOfDraw.backgroundColor = [UIColor clearColor]; numberOfDraw.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:numberOfDraw]; return view;
источник