Ich versuche, die Hintergrundfarbe von UITableViewHeaderFooterView zu ändern. Obwohl die Ansicht angezeigt wird, bleibt die Hintergrundfarbe die Standardfarbe. Ich erhalte ein Protokoll von xcode mit der Aufschrift:
Das Festlegen der Hintergrundfarbe in UITableViewHeaderFooterView ist veraltet. Bitte verwenden Sie stattdessen contentView.backgroundColor.
Keine der folgenden Optionen funktioniert jedoch:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
Ich habe auch versucht, die Hintergrundfarbe der Ansicht in der xib-Datei zu ändern.
Irgendwelche Vorschläge? Vielen Dank.
iphone
ios
xcode
uitableview
Chun
quelle
quelle
Antworten:
Sie sollten entweder myTableViewHeaderFooterView.tintColor verwenden oder myTableViewHeaderFooterView.backgroundView eine benutzerdefinierte Hintergrundansicht zuweisen.
quelle
tintColor
arbeite ich nicht an iOS7. Ich konnte die Farbe nur ändern, indem ich eine benutzerdefinierte AnsichtmyTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
Die einzige Möglichkeit, eine Farbe (mit einem Alpha) festzulegen, besteht darin, Folgendes zu verwenden
backgroundView
:Schnell
Obj-C
Antworten auf Kommentare
Keine dieser anderen Optionen funktioniert zuverlässig (trotz der folgenden Kommentare)
Die
backgroundView
Größe wird automatisch geändert. (Keine Notwendigkeit, Einschränkungen hinzuzufügen)Kontrolliere Alpha mit
UIColor(white: 0.5, alpha: 0.5)
oderbackgroundView.alpha = 0.5
.(Natürlich reicht jede Farbe)
Erstellen Sie bei Verwendung von XIB die Stammansicht a
UITableViewHeaderFooterView
und ordnen Sie diebackgroundView
programmgesteuert zu:Registrieren mit:
Laden mit:
↻ Animation wiedergeben
► Finden Sie diese Lösung auf GitHub und weitere Details zu Swift Recipes .
quelle
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
In iOS 7
contentView.backgroundColor
hat bei mirtintColor
nicht funktioniert.Obwohl
clearColor
es für mich nicht funktioniert hat, besteht die Lösung darin, diebackgroundView
Eigenschaft auf ein transparentes Bild zu setzen. Vielleicht hilft es jemandem:quelle
Stellen Sie sicher, dass Sie die Hintergrundfarbe
contentView
für Folgendes festlegenUITableViewHeaderFooterView
:Dann wird es funktionieren.
quelle
Für mich habe ich alles versucht, was oben angegeben wurde, aber immer noch die Warnung "Das Einstellen der Hintergrundfarbe in UITableViewHeaderFooterView ist veraltet. Bitte verwenden Sie stattdessen contentView.backgroundColor." Dann habe ich Folgendes versucht: In der XIB-Datei wurde die Hintergrundfarbe für die Kopfzeilenansicht ausgewählt, um die Farbe anstelle der Standardeinstellung zu löschen, sobald ich sie auf Standard geändert habe. Die Warnung wurde ausgeblendet.
quelle
Für eine klare Farbe verwende ich
Es scheint mir in Ordnung zu sein.
quelle
backgroundView = UIView()
und dannbackgroundColor = .clear
war die einzige funktionierende Lösung. Danke dir.Für einfarbige Hintergrundfarben
contentView.backgroundColor
sollte die Einstellung ausreichend sein:Bei Farben mit Transparenz, einschließlich
.clear
Farbe, funktioniert dies nicht mehr:Setzen Sie die
backgroundView
Eigenschaft für eine vollständig transparente Abschnittsüberschrift auf eine leere Ansicht:Achten Sie jedoch auf mögliche Nebenwirkungen. Sofern die Tabellenansicht nicht auf "Gruppiert" eingestellt ist, werden die Abschnittsüberschriften beim Scrollen nach oben oben eingerastet. Wenn die Abschnittsüberschriften transparent sind, wird der Zelleninhalt durchsichtig, was möglicherweise nicht gut aussieht.
Hier haben Abschnittsüberschriften einen transparenten Hintergrund:
Um dies zu verhindern, ist es besser, den Hintergrund der Abschnittsüberschrift auf eine Volltonfarbe (oder einen Farbverlauf) einzustellen, die dem Hintergrund Ihrer Tabellenansicht oder Ihres Ansichtscontrollers entspricht.
Hier haben Abschnittsüberschriften einen vollständig undurchsichtigen Hintergrund mit Farbverlauf:
quelle
Rufen Sie im Interface Builder Ihre .xib-Datei im obersten Element auf und setzen Sie im Attributinspektor die Hintergrundfarbe auf Standard. Gehen Sie dann zur Inhaltsansicht und legen Sie dort die Hintergrundfarbe fest (siehe https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
quelle
Auf iOS9
headerView.backgroundView.backgroundColor
funktionierte für mich:Unter iOS8 habe ich
headerView.contentView.backgroundColor
ohne Probleme verwendet, aber jetzt mit iOS 9 bekam ich ein seltsames Problem, bei dem die Hintergrundfarbe nicht den gesamten Raum der Zelle ausfüllte. Also habe ich es einfach versuchtheaderView.backgroundColor
und ich habe den gleichen Fehler vom OP bekommen.So funktioniert jetzt alles super und ohne Warnungen mit
headerView.backgroundView.backgroundColor
quelle
Wenn Sie eine benutzerdefinierte Unterklasse
UITableViewHeaderFooterView
mitxib
Datei erstellt haben, sollten Sie diese überschreibensetBackgroundColor
. Lass es leer.Und das wird Ihr Problem lösen.
quelle
Wenn Sie eine Abschnittsüberschriftenzelle mit Storyboard / Nib anpassen , stellen Sie sicher, dass die Hintergrundfarbe für die Ansicht "Tabellenabschnittsüberschrift" standardmäßig ist .
Wenn Sie eine Unterklasse verwenden
UITableViewHeaderFooterView
und nib verwenden, müssen Sie lediglich eineIBOutlet
für die Inhaltsansicht erstellen und diese z.containerView
. Dies ist nicht zu verwechseln mitcontentView
dem übergeordneten Element dieser Containeransicht.Mit diesem Setup ändern Sie
containerView
stattdessen die Hintergrundfarbe von .quelle
Ich habe es mit der Erscheinungsbild-Kette WhenContainedIn versucht, und es hat bei mir funktioniert.
quelle
Vielleicht, weil die Hintergrundansicht nicht existiert
diese Arbeit für mich.
quelle
iOS 12, Swift 5. Wenn Sie bereit (oder versucht!) Sind, einen Erscheinungs-Proxy zu verwenden, funktioniert die folgende Lösung:
oder
quelle
Vergiss die Schwierigkeiten.
Fügen Sie Ihrem Projekt den folgenden
UITableViewHeaderFooterView+BGUpdate.swift
Code hinzu:Die Verwendung ist wie erwartet einfach:
Anwendungsbeispiele :
1) Im Delegierten
tableView:viewForHeaderInSection:
:oder
2) In Ihrer benutzerdefinierten Header-Ansichtsklasse:
quelle
Das Einstellen der Hintergrundansicht mit klarer Farbe funktioniert gut für sichtbare Überschriften. Wenn die Tabelle gescrollt wird, um die Überschriften unten anzuzeigen, schlägt diese Lösung fehl.
Die PSMy-Tabelle besteht nur aus Headern ohne Zellen.
quelle
Schnell:
quelle
Erstellen Sie UIView, legen Sie die Hintergrundfarbe fest und setzen Sie sie dann auf self.backgroundView.
quelle
Ich fühle mich gezwungen, meine Erfahrungen zu teilen. Ich hatte diesen Code, der mit iOS 10 und iOS 11 gut funktionierte
headerView?.contentView.backgroundColor = .lightGray
Dann entschied ich mich plötzlich, die App für iOS 9 bereitzustellen, da es einige Geräte gibt (iPad mini, einige ältere Generationen aktualisieren nicht auf ein Betriebssystem über 9 hinaus) - Die einzige Lösung, die für alle iOS 9, 10 und 11 funktioniert war es, eine Basisansicht für den Header zu definieren, die dann alle anderen Header-Unteransichten enthält, sie vom Storyboard aus zu verbinden und die
backgroundColor
Basisansicht festzulegen .Sie sollten bei der Verkabelung der Steckdose darauf achten, sie nicht anzurufen,
backgroundView
da es in einigen bereits eine Eigenschaft mit diesem Namen gibtsuperclass
. Ich habe meine angerufencontainingView
Klicken Sie auch bei der Verkabelung der Steckdosensteuerung auf die Ansicht
Document Outline
, um sicherzustellen, dass sie nicht verkabelt istfile owner
quelle
quelle