ios - guidelines - uitableviewcontroller




UITableView-Ändere die Überschriftfarbe des Abschnitts (18)

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.


Ä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
}


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
}

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()

}

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
}

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

Ich habe eine Nachricht von Xcode über das Konsolenprotokoll erhalten

[TableView] Das Festlegen der Hintergrundfarbe für UITableViewHeaderFooterView ist veraltet. Legen Sie stattdessen eine benutzerdefinierte UIView mit der gewünschten Hintergrundfarbe für die Eigenschaft backgroundView fest.

Dann erstelle ich einfach eine neue UIView und lege sie als Hintergrund von HeaderView. Keine gute Lösung, aber einfach, wie Xcode sagte.


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

In meinem Fall hat es so funktioniert:

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

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!


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

UITableViewHeaderFooterview.apparance (). BackgroundColor = theme.subViewBackgroundColor


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.


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"


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

Wenn Sie keine benutzerdefinierte Ansicht erstellen möchten, können Sie die Farbe auch so ä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;
    }
}

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
}

iOS 8+

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

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 .





cocoa-touch