Frage

Wie kann ich Farbe eines Abschnittsheader in UITableView ändern?

Bearbeiten : Die Antwort zur Verfügung gestellt von DJ-S für iOS berücksichtigt werden soll, 6 und über. Die akzeptierte Antwort ist veraltet.

War es hilfreich?

Lösung

Hoffentlich ist diese Methode aus dem UITableViewDelegate Protokoll erhält Sie gestartet:

Objective-C:

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

Swift:

func tableView(_ tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView!
{
  let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
  if (section == integerRepresentingYourSectionOfInterest) {
    headerView.backgroundColor = UIColor.redColor()
  } else {
    headerView.backgroundColor = UIColor.clearColor()
  }
  return headerView
}

Aktualisiert 2017:

Swift 3:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
    {
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
        if (section == integerRepresentingYourSectionOfInterest) {
            headerView.backgroundColor = UIColor.red
        } else {
            headerView.backgroundColor = UIColor.clear
        }
        return headerView
    }

Ersetzen [UIColor redColor] mit je nachdem, was UIColor Sie möchten. Sie können auch die Abmessungen von headerView einstellen möchten.

Andere Tipps

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

Dieses Verfahren ist nicht mit der Definition und Ihre eigene benutzerdefinierte Ansicht zu erstellen. In iOS 6 und höher, können Sie leicht die Hintergrundfarbe und die Textfarbe ändern, indem Sie definieren die

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

Abschnitt Delegatmethode

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-und-footer-Farben /

Swift 04.03

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
    view.tintColor = UIColor.red
    let header = view as! UITableViewHeaderFooterView
    header.textLabel?.textColor = UIColor.white
}

Hier ist, wie die Textfarbe zu ändern.

UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)] autorelease];
label.text = @"Section Header Text Here";
label.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.75];
label.backgroundColor = [UIColor clearColor];
[headerView addSubview:label];

Sie können dies tun, wenn Sie mit benutzerdefinierten Farb Header wollen:

[[UITableViewHeaderFooterView appearance] setTintColor:[UIColor redColor]];

Diese Lösung funktioniert gut, da iOS 6.0.

Die folgende Lösung funktioniert für Swift 1.2 mit iOS 8 +

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    // This changes the header background
    view.tintColor = UIColor.blueColor()

    // Gets the header view as a UITableViewHeaderFooterView and changes the text colour
    var headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
    headerView.textLabel.textColor = UIColor.redColor()

}

Vergessen Sie nicht, dieses Stück Code aus dem Delegierten oder Ihre Ansicht abgeschnitten werden oder hinter dem Tisch in einigen Fällen in Bezug auf die Höhe Ihrer Ansicht / Etikett erscheinen hinzuzufügen.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 30;
}

Wenn Sie nicht über eine benutzerdefinierte Ansicht erstellen möchten, können Sie auch die Farbe wie das ändern (erfordert iOS 6):

-(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
        UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
        UIView* content = castView.contentView;
        UIColor* color = [UIColor colorWithWhite:0.85 alpha:1.]; // substitute your color here
        content.backgroundColor = color;
    }
}

Sie können in ca. 2 Sekunden auf main.storyboard tun.

  1. Wählen Sie Tabellenansicht
  2. Gehen Sie auf Attribute Inspector
  3. Liste item
  4. Blättern Sie nach unten Hierher zum Ansehen
  5. Ändern "Hintergrund"

 Werfen Sie einen Blick hier

Zur Einstellung der Hintergrundfarbe auf UITableViewHeaderFooterView ist veraltet. Bitte verwenden Sie contentView.backgroundColor statt.

Stellen Sie die Hintergrund- und Textfarbe der Schnittfläche: (Dank William Jockusch und Dj S)

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
        UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
        castView.contentView.backgroundColor = [UIColor grayColor];
        [castView.textLabel setTextColor:[UIColor grayColor]];
    }
}

Swift 4

Hintergrundfarbe ändern , Textbeschriftung Farbe und Schrift für die Header-Ansicht eines UITableView Abschnitts, einfach außer Kraft setzt willDisplayHeaderView für Ihren Tisch Ansicht wie folgt:

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        let header = view as! UITableViewHeaderFooterView
        header.backgroundView?.backgroundColor = .white
        header.textLabel?.textColor = .black
        header.textLabel?.font = UIFont(name: "Helvetica-Bold", size: 14)
} 

Das funktionierte perfekt für mich; zu hoffen, dass es Ihnen hilft!

Hier ist, wie ein Bild in der Kopfansicht hinzuzufügen:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
    UIImageView *headerImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"top-gery-bar.png"]] autorelease];

    headerImage.frame = CGRectMake(0, 0, tableView.bounds.size.width, 30);

    [headerView addSubview:headerImage];

    return headerView;
}

Für iOS8 (Beta) und Swift wählen die RGB-Farbe, die Sie wollen, und versuchen Sie dies:

override func tableView(tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView! {
    var header :UITableViewHeaderFooterView = UITableViewHeaderFooterView()

    header.contentView.backgroundColor = UIColor(red: 254.0/255.0, green: 190.0/255.0, blue: 127.0/255.0, alpha: 1)
    return header

}

(Der „Überschreibung“ ist, da bin ich dort die UITableViewController anstelle eines normalen UIViewController in meinem Projekt verwenden, aber es ist nicht zwingend für die Änderung der Abschnittsheader Farbe)

Der Text Ihres Kopf wird noch zu sehen. Beachten Sie, dass Sie benötigen, um den Abschnitt Kopfhöhe einzustellen.

Good Luck.

SWIFT 2

Ich konnte erfolgreich die Farbe mit einem zusätzlichen Unschärfeeffekt Abschnitt Hintergrund ändern (was wirklich cool ist). Um die Hintergrundfarbe des Abschnitts leicht zu ändern:

  1. Erste Storyboard gehen und wählen Sie die Tabellenansicht
  2. Gehen Sie auf Attribute Inspector
  3. Liste item
  4. Blättern Sie nach unten zu Ansicht
  5. Ändern "Hintergrund"

Dann für Unschärfe-Effekt, fügen Sie den Code ein:

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    // This is the blur effect

    let blurEffect = UIBlurEffect(style: .Light)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)

    // Gets the header view as a UITableViewHeaderFooterView and changes the text colour and adds above blur effect
    let headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
    headerView.textLabel!.textColor = UIColor.darkGrayColor()
    headerView.textLabel!.font = UIFont(name: "HelveticaNeue-Light", size: 13)
    headerView.tintColor = .groupTableViewBackgroundColor()
    headerView.backgroundView = blurEffectView

}

ich seine wissen beantwortet, nur für den Fall, in Swift die Verwendung folgende

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let tableViewWidth = self.tableView.bounds

        let headerView = UIView(frame: CGRectMake(0, 0, tableViewWidth.size.width, self.tableView.sectionHeaderHeight))
        headerView.backgroundColor = UIColor.greenColor()

        return headerView
    }

iOS 8 +

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        tableView.tableHeaderView?.backgroundColor = UIColor.blue()
}

Basierend auf @Dj S Antwort, mit Swift 3. Dies funktioniert gut auf iOS 10.

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    // Background color
    view.tintColor = UIColor.black

    // Text Color
    let headerView = view as! UITableViewHeaderFooterView
    headerView.textLabel?.textColor = UIColor.white
}

Ich habe ein Projekt mit statischer Tabellenansicht Zellen, in iOS 7.x. willDisplayHeaderView nicht ausgelöst. Allerdings ist diese Methode funktioniert ok:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    NSLog(@"%s", __FUNCTION__);
    CGRect headerFrame = CGRectMake(x, y, w, h);    
    UIView *headerView = [[UIView alloc] initWithFrame:headerFrame];  
    headerView.backgroundColor = [UIColor blackColor];
 -(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view
  forSection:(NSInteger)section
  {
        if ([view isKindOfClass: [UITableViewHeaderFooterView class]])
        {
             UITableViewHeaderFooterView *castView = (UITableViewHeaderFooterView *) view;
             UIView *content = castView.contentView;
             UIColor *color = [UIColor whiteColor]; // substitute your color here
             content.backgroundColor = color;
             [castView.textLabel setTextColor:[UIColor blackColor]];
        }
 }

Ich denke, dieser Code nicht so schlecht ist.

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier(MyHeaderView.reuseIdentifier) as MyHeaderView
    let backgroundView = UIView()
    backgroundView.backgroundColor = UIColor.whiteColor()
    headerView.backgroundView = backgroundView
    headerView.textLabel.text = "hello"
    return headerView
}

In iOS 7.0.4 Ich habe einen benutzerdefinierten Header mit einem eigenen XIB. Nichts erwähnt hier gearbeitet. Es hatte die Unterklasse der UITableViewHeaderFooterView sein mit dem dequeueReusableHeaderFooterViewWithIdentifier: zu arbeiten, und es scheint, dass die Klasse sehr hartnäckig ist in Bezug auf die Hintergrundfarbe. So endlich habe ich eine UIView (man könnte es tun, entweder mit Code oder IB) mit dem Namen customBackgroudView, und legen Sie dann ist es background Eigenschaft. In layoutSubviews: set ich, dass nach Ansicht des Rahmens Grenzen. Es funktioniert mit iOS 7 und gibt keine Pannen.

// in MyTableHeaderView.xib drop an UIView at top of the first child of the owner
// first child becomes contentView

// in MyTableHeaderView.h
@property (nonatomic, weak) IBOutlet UIView * customBackgroundView;

// in MyTableHeaderView.m
-(void)layoutSubviews;
{
    [super layoutSubviews];

    self.customBackgroundView.frame = self.bounds;
}
// if you don't have XIB / use IB, put in the initializer:
-(id)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
    ...
    UIView * customBackgroundView = [[UIView alloc] init];
    [self.contentView addSubview:customBackgroundView];
    _customBackgroundView = customBackgroundView;
    ...
}


// in MyTableViewController.m
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    MyTableHeaderView * header = [self.tableView
                                          dequeueReusableHeaderFooterViewWithIdentifier:@"MyTableHeaderView"];
    header.customBackgroundView.backgroundColor = [UIColor redColor];
    return header;
}

Nur die Farbe der Schicht der Kopfansicht ändern

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
  UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0,    tableView.bounds.size.width, 30)] autorelease];
 headerView.layer.backgroundColor = [UIColor clearColor].CGColor
}

Wenn jemand swift braucht, hält Titel:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0,y: 0,width: self.tableView.frame.width, height: 30))
    view.backgroundColor = UIColor.redColor()
    let label = UILabel(frame: CGRect(x: 15,y: 5,width: 200,height: 25))
    label.text = self.tableView(tableView, titleForHeaderInSection: section)
    view.addSubview(label)
    return view
}

In meinem Fall, es wie folgt gearbeitet:

let headerIdentifier = "HeaderIdentifier"
let header = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: headerIdentifier)
header.contentView.backgroundColor = UIColor.white

Sie einfach die Hintergrundfarbe der Hintergrund-Ansicht verwenden:

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){         
  let tableHeader = view as! UITableViewHeaderFooterView        
  tableHeader.backgroundView?.backgroundColor = UIColor.white     
}

Mit RubyMotion / RedPotion, fügen Sie diese in Ihre TableScreen:

  def tableView(_, willDisplayHeaderView: view, forSection: section)
    view.textLabel.textColor = rmq.color.your_text_color
    view.contentView.backgroundColor = rmq.color.your_background_color
  end

Funktioniert wie ein Zauber!

Ich habe Nachricht von Xcode durch Konsolenprotokoll

  

[Tableview] Einstellung der Hintergrundfarbe auf   UITableViewHeaderFooterView ist veraltet. Bitte stellen Sie eine benutzerdefinierte   UIView mit Ihrer gewünschten Hintergrundfarbe zu dem backgroundView   Eigenschaft statt.

Dann gerade erstelle ich eine neue UIView und legen Sie es als Hintergrund der HeaderView. Keine gute Lösung, aber es einfach wie Xcode sagte.

Obwohl func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) wird auch funktionieren, können Sie diese acheive ohne einen weiteren Delegierten Verfahrens. in Ihnen Methode func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?, können Sie view.contentView.backgroundColor = UIColor.white statt view.backgroundView?.backgroundColor = UIColor.white benutzen, die nicht funktioniert. (Ich weiß, dass backgroundView optional ist, aber auch, wenn es da ist, das ist woking nicht ohne willDisplayHeaderView Umsetzung

UIAppearance verwenden können Sie es wie dies für alle Header in Ihrer Anwendung ändern:

UITableViewHeaderFooterView.appearance (). Background = theme.subViewBackgroundColor

Swift 4 macht es sehr einfach. fügen Sie diese einfach auf Ihre Klasse und legen Sie die Farbe je nach Bedarf.

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        view.backgroundColor = UIColor(red: 0.094, green: 0.239, blue: 0.424, alpha: 1.0)
    }

oder wenn eine einfache Farbe

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        view.backgroundColor = UIColor.white
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top