Pregunta

Quiero establecer la altura 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 código de abajo?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

Gracias

¿Fue útil?

Solución

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;
}

Otros consejos

Al comprobar 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 verifica el valor de la sección de propiedad HeaderHeight en la vista de tabla que debería indicarle.

En realidad haz el truco :)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

En aras de la integridad: en iOS7 +, la altura de los encabezados de sección de estilo agrupados es 55.5 para el primero y 38 para los siguientes encabezados. (medido con DCIntrospect)

No estoy seguro de cuál es la respuesta correcta aquí, pero ni 10 ni 22 parece ser la altura correcta para una vista de tabla agrupada en iOS 5. Estoy usando 44, basado en esta pregunta, y al menos parece aproximadamente la altura correcta.

Para obtener la altura predeterminada, simplemente deja que super lo maneje:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}

Para swift 4.2 debe devolver UITableView.automaticDimension

Esto debería hacer el truco

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top