iphone - example - uitableview swift 4
Altura predeterminada para el encabezado de sección en UITableView (7)
Quiero establecer el alto del primer encabezado en mi UITableView. Para los otros encabezados quiero que sigan siendo la altura predeterminada. ¿Qué valor / constante puedo poner en lugar de "someDefaultHeight" en el siguiente código?
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return kFirstHeaderHeight;
return someDefaultHeight;
}
Gracias
Al verificar los valores predeterminados en mi aplicación, parece que para una tabla agrupada, el valor predeterminado es una altura de 22 y para una tabla no agrupada, el valor predeterminado es una altura de 10.
Si comprueba el valor de la sección de propiedad HeaderHeight en su tabla vista, esto debería indicarlo.
En IOS 5.0 en adelante puede devolver UITableViewAutomaticDimension en la mayoría de los métodos de delegado. Está en la parte inferior de la página de documentación
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == CUSTOM_SECTION)
{
return CUSTOM_VALUE;
}
return UITableViewAutomaticDimension;
}
En aras de la exhaustividad: en iOS7 + la altura de los encabezados de las secciones de estilos agrupados es 55.5
para el primero y 38
para los siguientes encabezados. (medido con DCIntrospect)
En realidad haz el truco :)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return kFirstSectionHeaderHeight;
return [self sectionHeaderHeight];
}
Esto debería funcionar
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section == CUSTOM_SECTION)
{
return CUSTOM_VALUE;
}
return [tableView rowHeight];
}
No estoy seguro de cuál es la respuesta correcta aquí, pero ni 10 ni 22 parecen ser la altura correcta para una vista de tabla agrupada en iOS 5. Estoy usando 44, basado en this pregunta, y al menos parece ser más o menos la altura correcta.
Para obtener la altura predeterminada, simplemente déjala manejar super
:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return kFirstHeaderHeight;
return [super tableView:tableView heightForHeaderInSection:section];
}