2010-03-15 5 views
8

Una domanda veloce, per una risposta rapida (dal momento che non sto trovando alcuna):UITableView titleForSection

C'è un modo per cambiare il tipo di carattere del titolo della sezione (data dal titleForSection) in iPhone?

Grazie mille!

risposta

26

Dovrai utilizzare il metodo viewForHeaderInSection: e fornire la tua vista personale. Fortunatamente questo può essere un UILabel con un font specificato, quindi puoi farlo abbastanza facilmente.

39

Grazie Jasarien! Avevi assolutamente ragione.

lascio il mio codice qui per aiutare qualcuno con lo stesso problema:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    NSString *sectionTitle = @"Just a title"; 

    // Create label with section title 
    UILabel *label = [[[UILabel alloc] init] autorelease]; 
    label.frame = CGRectMake(0, 0, 284, 23); 
    label.textColor = [UIColor blackColor]; 
    label.font = [UIFont fontWithName:@"Helvetica" size:14]; 
    label.text = sectionTitle; 
    label.backgroundColor = [UIColor clearColor]; 

    // Create header view and add label as a subview 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+10

Questo è grande, tuttavia, UILabel è una sottoclasse diretta di UIView, quindi non hai davvero bisogno di creare una vista 'intestazione' e aggiungere l'etichetta come sottoview. Puoi semplicemente restituire l'etichetta stessa come vista dell'intestazione. – Jasarien

+5

Se si restituisce l'etichetta stessa come intestazione, come si darebbe un po 'di offset a sinistra? La modifica dell'origine.x del riquadro dell'etichetta in quel caso non funziona. – talkol

+0

Solo titolo riga singola) –

5

dovete ignorare

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 

che invia altezza richiesta per il titolo della sezione. Altrimenti si sovrapporrà alla cella.

3

viewForHeaderInSection potrebbe funzionare bene ... ma qui è un'alternativa che funziona bene per me (Xcode 5 e bersaglio iOS7):

// To set the background color and text color of the Table Headers 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor colorWithRed:0.329 green:0.557 blue:0.827 alpha:1.000]; 

    // Text Color & Alignment 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 
    [header.textLabel setTextAlignment:NSTextAlignmentCenter]; 
    // Text Font 
    UIFont *saveFont = header.textLabel.font; 
    [header.textLabel setFont:[UIFont fontWithName:saveFont.fontName size:18.0]]; 

    // Another way to set the background color 
    // Note: does not preserve gradient effect of original heade!r 
    // header.contentView.backgroundColor = [UIColor blackColor]; 
} 

Here's what it looks like