Altezza predefinita per l'intestazione di sezione in UITableView
-
05-07-2019 - |
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
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];
}