2010-03-05 5 views
9

Ich habe ziemlich einfach einfache Frage (ich hoffe schon). Wie ändere ich die Farbe der Abschnittsüberschrift in einer UITableview von Standard Blau zu Schwarz transparent? Vielen Dank im Voraus.Ändern der Farbe des Abschnitts Header in UITableview

+1

Hier ist eine ähnliche Frage: http://stackoverflow.com/questions/813068/uitableview-change-section-header -color – nylund

Antwort

18

Sie diese Methode in dem UITableViewDelegate Protokoll implementieren müssen:

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

Hier ist ein Link auf die documentation

... und tut so etwas wie dieses (sub in Ihrer eigenen Farbe):

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease]; 
[sectionView setBackgroundColor:[UIColor blackColor]]; 
return sectionView; 

Sie können auch den Abschnitt Ganzzahl verwenden, um Farben oder etwas Ähnliches zu ändern. Ich denke, die Standardhöhe für die Abschnitte ist 22, aber Sie können es machen, was Sie wollen. Ist das mit deiner Frage gemeint? Hoffe das hilft.

+0

Danke, ich dachte, es würde irgendeine Art von Trigger in IB geben, um zu schwarzer Farbe zu wechseln. Aber trotzdem, danke. –

+1

Aber bitte, Cache diese Ansichten. Es gibt einen Fehler in UIKit, der nach Header-Sichten fragt, wenn das TableView gescrollt wird. Daher wird diese Methode beim Scrollen für jeden Pixel-Offset aufgerufen. 22px ist in der Tat die Standardhöhe. – Joost

+1

hi, ich verstehe, dass diese Methode aufgerufen wird, wenn das Scrollen stattfindet ... wie können wir das speichern, um unnötige Ansichten zu sparen, die erstellt werden usw.? Wenn du einen Kommentar oder ein Update zu deinem Beitrag schreiben kannst, wird es sehr hilfreich sein. Danke – Pavan

0
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,tableView.bounds.size.width, 30)]; 
    if (section == 0) 
    [headerView setBackgroundColor:[UIColor redColor]]; 
    else 
    [headerView setBackgroundColor:[UIColor clearColor]]; 
    return headerView; 
    } 
20

Dies ist eine alte Frage, aber ich denke, die Antwort muss aktualisiert werden.

Bei dieser Methode müssen keine benutzerdefinierten Ansichten definiert werden.
In iOS 6 und höher können Sie die Hintergrundfarbe und die Textfarbe leicht ändern, indem Sie die Delegatenmethode

- (void)tableView:(UITableView *)tableView 
     willDisplayHeaderView:(UIView *)view 
     forSection:(NSInteger)section
definieren.

Zum Beispiel:

 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor blackColor]; 

    // Text Color 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 

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

Genommen von meinem Beitrag hier: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Verwandte Themen