Kann mich bitte jemand anweisen, wie ich die Schriftgröße für den Text in einem UITableView-Abschnittskopf am einfachsten ändern kann?
Ich habe die Abschnittsüberschriften mit der folgenden Methode implementiert:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Dann verstehe ich, wie man die Höhe der Abschnittsüberschriften mit dieser Methode erfolgreich ändert:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Ich habe die UITableView-Zellen mit dieser Methode gefüllt:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Ich bin jedoch nicht sicher, wie ich die Schriftgröße - oder auch den Schriftstil - des Abschnittsüberschriftstextes tatsächlich erhöhen kann.
Kann mir bitte jemand helfen? Vielen Dank.
Antworten:
Leider müssen Sie dies möglicherweise überschreiben:
In Ziel-C:
In Swift:
Versuchen Sie so etwas:
In Ziel-C:
In Swift:
quelle
tableView:heightForHeaderInSection:
umständlich sein kann.Eine andere Möglichkeit, dies zu tun, wäre, auf die
UITableViewDelegate
Methode zu reagierenwillDisplayHeaderView
. Die übergebene Ansicht ist tatsächlich eine Instanz von aUITableViewHeaderFooterView
.Im folgenden Beispiel wird die Schriftart geändert und der Titeltext wird vertikal und horizontal in der Zelle zentriert. Beachten Sie, dass Sie auch darauf reagieren sollten
heightForHeaderInSection
, wenn Änderungen an der Höhe Ihrer Kopfzeile im Layout der Tabellenansicht berücksichtigt werden. (Das heißt, wenn Sie die Kopfhöhe bei dieserwillDisplayHeaderView
Methode ändern möchten .)Sie können dann auf die
titleForHeaderInSection
Methode reagieren, um diesen konfigurierten Header mit verschiedenen Abschnittsüberschriften wiederzuverwenden.Ziel c
Swift 1.2
(Hinweis: Wenn Ihr View Controller ein Nachkomme von a ist
UITableViewController
, muss dies als deklariert werdenoverride func
.)Swift 3.0
Dieser Code stellt auch sicher, dass die App nicht abstürzt, wenn Ihre Header-Ansicht etwas anderes als eine UITableViewHeaderFooterView ist:
quelle
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
und / oderheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
zusammen mit den anderen erforderlichen Schritten (siehe hier: captechconsulting.com/blog/john-szumski/… )Die Antwort von mosca1337 ist zwar eine korrekte Lösung, aber seien Sie vorsichtig mit dieser Methode. Für eine Kopfzeile mit Text, der länger als eine Zeile ist, müssen Sie die Höhe der Kopfzeile berechnen, die
tableView:heightForHeaderInSection:
umständlich sein kann.Eine sehr bevorzugte Methode ist die Verwendung der Erscheinungs-API:
Dadurch wird die Schriftart geändert, während die Tabelle verlassen wird, um die Höhen selbst zu verwalten.
Um optimale Ergebnisse zu erzielen, unterklassifizieren Sie die Tabellenansicht und fügen Sie sie der Containment-Kette (in
appearanceWhenContainedIn:
) hinzu, um sicherzustellen, dass die Schriftart nur für die spezifischen Tabellenansichten geändert wird.quelle
- tableView:viewForHeaderInSection:
rechts zurückgeben? In diesem Fall kann die Schriftart genau dort eingestellt werden. Dies ist, was die Lösung von @ mosca1337 sowieso tut.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Für iOS 7 benutze ich dies,
Hier ist die Swift 3.0- Version mit Header-Größenänderung
quelle
Swift 3:
Einfachste Möglichkeit, nur die Größe anzupassen :
quelle
Swift 2.0 :
Implementieren Sie viewForHeaderInSection wie folgt:
Implementieren Sie willDisplayHeaderView wie folgt:
Denken Sie daran: Wenn Sie statische Zellen verwenden, wird der erste Abschnittskopf aufgrund des oberen Bereichs von UITableView höher aufgefüllt als andere Abschnittsüberschriften. um dies zu beheben:
Implementieren Sie heightForHeaderInSection wie folgt:
quelle
Swift 4 Version von Leo Natan Antwort ist
Wenn Sie eine benutzerdefinierte Schriftart festlegen möchten, können Sie diese verwenden
quelle
Mit dieser Methode können Sie auch die Schriftgröße, den Schriftstil und den Header-Hintergrund festlegen . Hierfür gibt es zwei Methoden
Erste Methode
Zweite Methode
quelle
Swift 2:
Passen Sie, wie von OP angefordert, nur die Größe an und nicht als fettgedruckte Systemschrift oder was auch immer:
quelle
Dies ist meine Lösung mit Swift 5.
Um die Header-Abschnittsansicht vollständig zu steuern, müssen Sie die tableView (: viewForHeaderInsection: :) -Methode in Ihrem Controller verwenden, wie im vorherigen Beitrag gezeigt. Es gibt jedoch noch einen weiteren Schritt: Um die Leistung zu verbessern, empfiehlt Apple, nicht jedes Mal eine neue Ansicht zu generieren, sondern die Header-Ansicht wie die wiederverwendbare Tabellenzelle wiederzuverwenden. Dies erfolgt mit der Methode tableView.dequeueReusableHeaderFooterView (withIdentifier :). Das Problem, das ich hatte, ist jedoch, dass die Schriftart nicht wie erwartet funktioniert, sobald Sie diese Wiederverwendungsfunktion verwenden. Andere Dinge wie Farbe, Ausrichtung alles in Ordnung, aber nur Schrift. Es gibt einige Diskussionen, aber ich habe dafür gesorgt, dass es wie folgt funktioniert.
Das Problem ist tableView.dequeueReusableHeaderFooterView (withIdentifier :) ist nicht wie tableView.dequeneReuseCell (:), das immer eine Zelle zurückgibt. Ersteres gibt eine Null zurück, wenn niemand verfügbar ist. Selbst wenn eine Header-Ansicht für die Wiederverwendung zurückgegeben wird, handelt es sich nicht um Ihren ursprünglichen Klassentyp, sondern um eine UITableHeaderFooterView. Sie müssen also das Urteil fällen und gemäß Ihrem eigenen Code handeln. Wenn es Null ist, erhalten Sie im Grunde eine brandneue Header-Ansicht. Wenn nicht Null, erzwinge das Wirken, damit du kontrollieren kannst.
quelle