Ist es möglich, ein mehrzeiliges textLabel in einer UITableViewHeaderFooterView zu haben (ohne ein benutzerdefiniertes UILabel zu verwenden)?

8

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

zu setzen

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!

    
Gareth Jones 12.01.2015, 12:45
quelle

3 Antworten

0

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.

%Vor%

Berechnen Sie dann in Ihrem View-Controller die Höhe der Abschnittsüberschriften

%Vor%

UITableViewDelegate Methoden

%Vor%     
Pang Ho Ming 09.03.2017 02:40
quelle
0

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.

    
Vadim Motorine 19.08.2017 05:47
quelle
-2

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.

    
Grzegorz Krukowski 30.01.2017 15:53
quelle

Tags und Links