ios swift - UITableView-Ändere die Überschriftfarbe des Abschnitts




delegate programmatically (23)

 -(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]];
        }
 }

Wie kann ich die Farbe eines Abschnittsheaders in UITableView ändern?

EDIT : Die Antwort von DJ-S sollte für iOS 6 und höher in Betracht gezogen werden. Die angenommene Antwort ist veraltet.


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

UITableViewHeaderFooterview.apparance (). BackgroundColor = theme.subViewBackgroundColor


Sie können es auf main.storyboard in ungefähr 2 Sekunden tun.

  1. Wählen Sie Tabellenansicht
  2. Wechseln Sie zu Attribute Inspector
  3. Listenpunkt
  4. Scrollen Sie nach unten zu Unterüberschrift anzeigen
  5. Hintergrund ändern"


Legen Sie die Hintergrund- und Textfarbe des Bereichs fest: (Danke an 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]];
    }
}

Ich weiß, dass es beantwortet wurde, nur für den Fall, In Swift verwenden Sie Folgendes

    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
    }

In iOS 7.0.4 habe ich einen eigenen Header mit seiner eigenen XIB erstellt. Nichts, was hier vorher erwähnt wurde, hat funktioniert. Es musste die Unterklasse der UITableViewHeaderFooterView sein, um mit der dequeueReusableHeaderFooterViewWithIdentifier: und es scheint, dass die Klasse bezüglich der Hintergrundfarbe sehr stur ist. So fügte ich schließlich eine UIView (Sie konnten es entweder mit Code oder IB) mit dem Namen customBackgroudView, und legen Sie dann seine backgroundColor-Eigenschaft. In layoutSubviews: Ich setze den Rahmen dieser Ansicht auf Grenzen. Es funktioniert mit iOS 7 und gibt keine Störungen.

// 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;
}

Ich denke, dass 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
}

So fügen Sie ein Bild in der Kopfzeile hinzu:

- (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;
}

Vergessen Sie nicht, dieses Codeelement aus dem Delegaten hinzuzufügen, oder Ihre Ansicht wird in manchen Fällen abgeschnitten oder hinter der Tabelle angezeigt, relativ zur Höhe Ihrer Ansicht / Ihres Labels.

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

iOS 8+

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

SWIFT 2

Ich konnte die Hintergrundfarbe des Abschnitts mit einem zusätzlichen Weichzeichner-Effekt erfolgreich ändern (was wirklich cool ist). Um die Hintergrundfarbe der Sektion einfach zu ändern:

  1. Gehe zuerst zum Storyboard und wähle die Tabellenansicht
  2. Wechseln Sie zu Attribute Inspector
  3. Listenpunkt
  4. Scrollen Sie nach unten zu Ansicht
  5. Hintergrund ändern"

Dann für Unschärfe-Effekt, zum Code hinzufügen:

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

}

Ändern Sie einfach die Farbe der Ebene der Kopfzeile

- (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 schnell benötigt, behä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
}

Ich habe ein Projekt mit statischen Tabellenansichtszellen in iOS 7.x. WillDisplayHeaderView wird nicht ausgelöst. Diese Methode funktioniert jedoch in Ordnung:

- (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];

Basierend auf @Dj S Antwort, mit Swift 3. Das funktioniert super 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
}

In meinem Fall hat es so funktioniert:

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

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

Diese Methode beinhaltet nicht das Definieren und Erstellen einer eigenen benutzerdefinierten Ansicht. In iOS 6 und höher können Sie die Hintergrundfarbe und die Textfarbe einfach ändern, indem Sie die Option definieren

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

Abschnitt Delegate-Methode

Beispielsweise:

- (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 meiner Post hier: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Schnell 3

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

Hoffentlich wird Ihnen diese Methode aus dem UITableViewDelegate Protokoll den Einstieg ermöglichen:

Ziel 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;
}

Schnell:

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:

Schnell 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 Sie [UIColor redColor] durch die UIColor Sie möchten. Sie können auch die Dimensionen von headerView .


Sie können dies tun, wenn Sie eine Kopfzeile mit einer benutzerdefinierten Farbe wünschen:

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

Diese Lösung funktioniert seit iOS 6.0.


Obwohl func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) auch funktionieren wird, können Sie dies erreichen, ohne eine andere Delegate-Methode zu implementieren. in dir func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? Methode können Sie view.contentView.backgroundColor = UIColor.white anstelle von view.backgroundView?.backgroundColor = UIColor.white was nicht funktioniert. (Ich weiß, dass backgroundView optional ist, aber selbst wenn es da ist, ist dies nicht woking ohne die Implementierung von willDisplayHeaderView


Mit RubyMotion / RedPotion fügen Sie dies in Ihren TableScreen ein:

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

Klappt wunderbar!


Wählen Sie für iOS8 (Beta) und Swift die gewünschte RGB-Farbe und versuchen Sie Folgendes:

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

}

(Die "Überschreibung" ist da, da ich den UITableViewController anstelle eines normalen UIViewController in meinem Projekt verwende, aber es ist nicht zwingend notwendig, die Farbe der Abschnittsüberschrift zu ändern)

Der Text Ihrer Kopfzeile wird weiterhin angezeigt. Beachten Sie, dass Sie die Höhe des Abschnittsheaders anpassen müssen.

Viel Glück.


Schnell 3:

Einfachste Möglichkeit, nur die Größe anzupassen:

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

    let header = view as! UITableViewHeaderFooterView

    if let textlabel = header.textLabel {
        textlabel.font = textlabel.font.withSize(15)
    }
}




ios uitableview cocoa-touch