UITableView - Farbteil Kopfwechsel
-
03-07-2019 - |
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.
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;
}
}
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:
- Erste Storyboard gehen und wählen Sie die Tabellenansicht
- Gehen Sie auf Attribute Inspector
- Liste item
- Blättern Sie nach unten zu Ansicht
- Ä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
}