Domanda

Voglio impostare l'altezza della prima intestazione in UITableView. Per le altre intestazioni voglio che rimangano l'altezza predefinita. Quale valore / costante posso inserire al posto di " someDefaultHeight " nel codice qui sotto?

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

    return someDefaultHeight;
}

Grazie

È stato utile?

Soluzione

In IOS 5.0 in poi è possibile restituire UITableViewAutomaticDimension nella maggior parte dei metodi delegati. Si trova in fondo alla pagina della documentazione

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

Altri suggerimenti

Dal controllo delle impostazioni predefinite nella mia app sembra che per una tabella raggruppata il valore predefinito sia un'altezza di 22 e per una tabella non raggruppata il valore predefinito sia un'altezza di 10.

Se controlli il valore della sezione propertyHeaderHeight sul tuo tableview che dovrebbe dirti.

Fai davvero il trucco :)

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

Per completezza: in iOS7 + l'altezza per le intestazioni delle sezioni di stile raggruppate è 55.5 per la prima e 38 per le seguenti intestazioni. (misurato con DCIntrospect)

Non sono sicuro di quale sia la risposta corretta qui, ma né 10 o 22 sembrano essere l'altezza corretta per una vista di tabella raggruppata in iOS 5. Sto usando 44, basato su questa domanda, e almeno sembra avere approssimativamente l'altezza corretta.

Per ottenere l'altezza predefinita, lascia che super gestisca:

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

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

Per swift 4.2 è necessario restituire UITableView.automaticDimension

Questo dovrebbe fare il trucco

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top