Sé cómo cambiar la altura de los encabezados de las secciones en la vista de tabla. Pero no puedo encontrar ninguna solución para cambiar el espaciado predeterminado antes de la primera sección.
Ahora mismo tengo este código:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == 0){
return 0;
}
return 10;
}
ios
uikit
tableview
uitableview
circuito
fuente
fuente
Respuestas:
Regrese en
CGFLOAT_MIN
lugar de 0 para la altura de sección deseada.Swift 3:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.leastNormalMagnitude } return tableView.sectionHeaderHeight }
Rápido:
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; }
fuente
CGFloat.leastNormalMagnitude
estimatedHeightForHeaderInSection
, la aplicación se bloqueará.Si usa
tableView
estilos agrupados ,tableView
configure automáticamente las inserciones superior e inferior. Para evitarlos y evitar la configuración de inserciones internas, use métodos delegados para el encabezado y el pie de página. Nunca devuelva 0.0 peroCGFLOAT_MIN
.C objetivo
- (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; }
Rápido
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 }
fuente
viewForHeaderInSection
que el encabezado desapareciera por completo.Parece que no puedo establecer una vista de encabezado de tabla con una altura de 0. Terminé haciendo lo siguiente:
- (void)viewWillAppear:(BOOL)animated{ CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = 1; UIView *headerView = [[UIView alloc] initWithFrame:frame]; [self.tableView setTableHeaderView:headerView]; }
fuente
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1.0f; }
Esto funcionó para mí con Swift 4 . Modifica tu
UITableView
eg enviewDidLoad
:// 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)))
fuente
Puedes probar esto:
En el
loadView
_tableView.sectionHeaderHeight = 0;
Entonces
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0; }
Debe eliminarse siempre que no tenga ningún objeto en el encabezado ...
Y si desea algún tamaño del encabezado de sección, cambie solo el valor de retorno.
lo mismo si no se quita el pie de sección.
_tableView.sectionFooterHeight = 0;
y
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; }
Bueno, esto funciona para mis problemas con la vista de tabla en iOS7.
fuente
Debes eliminar el código
self.tableView.tableHeaderView = [UIView new];
después de agregar- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return CGFLOAT_MIN; }
fuente
footer
altura la que está causando problemas en mi caso. Gracias por la ayuda.puede usar
viewForHeaderInSection
y devolver una vista con cualquier altura.- (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; } }
fuente
En Swift 2.0
func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { return yourHeight }
fuente
En Swift 4
Elimine el relleno superior adicional en la vista de tabla agrupada.
Aquí la altura se da 1 como altura mínima para el encabezado de la sección porque no puede dar 0 ya que la vista de tabla tomará el margen superior predeterminado si se le asigna una altura cero.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 1 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { return UIView() }
fuente
Ejemplo de 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;
fuente