Ich versuche, das eingebaute textLabel
in einem UITableViewHeaderFooterView
zu verwenden, um Titel in den Abschnittsüberschriften eines UITableView
anzuzeigen.
Diese Titel haben eine unbekannte Menge an Inhalten und müssen daher mehrere Zeilen umfassen.
Wenn dies eine Tabellenzelle wäre, würde myCell.numberOfLines = 0
funktionieren (zusammen mit estimatedHeightForRowAtIndexPath
, die UITableViewAutomaticDimension
zurückgibt). Aber ich kann nichts erreichen, was mit Tabellenköpfen funktioniert.
Ich habe versucht, textLabel.numberOfLines = 0
in viewForHeaderInSection
und / oder in willDisplayHeaderView
zu setzen. Ich habe auch versucht, es in einer benutzerdefinierten Unterklasse zu setzen, die ich erstellt habe, die die Überschriften verwenden (eingerichtet mit let sectionHeader = tableView.dequeueReusableHeaderFooterViewWithIdentifier("myIdentifier") as MyTableSectionHeaderSubclass
). In dieser Unterklasse habe ich versucht, textLabel.numberOfLines = 0
in der Funktion init
sowie in layoutSubviews()
Ich habe bereits die richtige Höhe für jeden Header festgelegt, indem ich den Platzbedarf für die Textzeichenfolge berechnet habe (mit CGSizeMake
in heightForHeaderInSection
, kann mehr Informationen dazu liefern, wenn es hilfreich ist). Es gibt also genug vertikalen Platz, um die Beschriftungen zu erweitern - sie hängen nur an einer Zeile, deren Text abgeschnitten ist und mit einer Ellipse endet.
Ich versuche diesen Ansatz, um die Verwendung eines benutzerdefinierten UILabel zur Anzeige des Titels zu vermeiden. Während ich Multiline auf diese Weise anwenden kann, bringt dies andere Probleme wie die Label-Position / den Rahmen verloren, wenn Tabellenzeilen hinzugefügt oder gelöscht werden.
Weiß jemand, ob mehrzeiliger Text sogar mit% UITableViewHeaderFooterView
eingebautem textLabel
möglich ist? Oder ist eine benutzerdefinierte UILabel
meine einzige Option?
Vielen Dank!
Ich denke, die Verwendung eines benutzerdefinierten UILabel
ist ein besserer Ansatz, da Sie die Kontrolle über alle Attribute übernehmen können.
Zunächst einmal eine praktische Funktion zur Berechnung der UILabel-Höhe. (Unten ist meine Version für mein spezifisches Projekt). Beachten Sie, dass ich NSMutableParagraphStyle
eingestellt habe, was meiner Meinung nach der beste Weg ist, Zeilenumbrüche, Zeilenabstände usw. zu behandeln.
Berechnen Sie dann in Ihrem View-Controller die Höhe der Abschnittsüberschriften
%Vor% UITableViewDelegate
Methoden
Im Interface Builder wird das Label über der Prototypzelle aufgetragen. Setzen Sie im Attribut-Inspektor die Anzahl der Zeilen = 0, Zeilenumbruch bis zum Zeilenumbruch und geben Sie Ihren Text ein.
Benutze diese:
%Vor%Beachten Sie, dass die automatische Größenanpassung nur mit:
funktioniert %Vor%Wenn Sie das tun, stellen Sie sicher, dass die contentView-Einschränkungen in Ihrer Zelle auf "top", "left", "bottom" und "right" für Ihr Textfeld gesetzt sind.
Auf diese Weise passt iOS die Größe der Zelle an die Textgröße an.
Tags und Links iphone uitableview ios swift