Self-Sizing (Dynamic Height) -Zellen in iOS 8 - Möglich ohne benutzerdefinierte UITableViewCell?

8

Ist es möglich, eine UITableViewCell in iOS 8 selbst zu erstellen, ohne eine benutzerdefinierte UITableViewCell zu erstellen?

Ich dachte, dass die Standard-UITableViewCell-Typen (UITableViewCellStyleDefault, UITableViewCellStyleSubtitle, UITableViewCellStyleValue1, UITableViewCellStyleValue2) automatische Layout-Einschränkungen eingebaut hatten. Dies wird durch die Tatsache bestätigt, dass die Einschränkungen für nicht benutzerdefinierte Zellen im Storyboard nicht geändert werden können.

Aber wenn ich eine nicht benutzerdefinierte Zelle vom Typ UITableViewCellStyleValue1 verwende, setze sie im Storyboard, setze numberOfRows für textLabel und detailTextLabel auf 0 und setze den viewDidLoad Code wie folgt, nur die textLabel der Zelle wird in der Autosizing der Höhe der Zelle. Wenn das detailTextLabel auf mehr Zeilen als das textLabel angezeigt wird, wird der Text für detailTextLabel über den oberen und unteren Rand der Zelle ausgegeben. Auch hier ändert sich die Größe der Zelle für textLabel, scheint aber den detailTextLabel in seiner Größenänderung zu ignorieren.

Die wichtigste Sache, die ich wissen muss, ist - muss ich eine benutzerdefinierte Zelle selbst für die Zeilen erstellen, die eine Standardzelle verwenden können, wenn ich dynamischen Text und Self-Sizing richtig unterstützen möchte?

%Vor%     
SAHM 08.03.2015, 20:06
quelle

1 Antwort

3

Ich habe es gerade in iOS 10 / XCode 8 (gleiche Ergebnisse in iOS 9 / XCode 7) mit den verschiedenen Zelltypen versucht und es sieht so aus, als ob es NUR für das textLabel und nicht für das detailTextLabel möglich ist.

(im Grunde die vom OP erwähnte Frage wiederholen)

ViewController-Code, der Text abwechselnd auf detailTextLabel und textLabel setzt.

%Vor%

Stellen Sie sicher, dass Sie die Zeileneigenschaft von textLabel und textDetailLabel auf 0 setzen, und hier sind die Ergebnisse.

Grundzelle

Rechte Detailzelle

Linke Detailzelle

Untertitelzelle

Ich werde dies als Fehler melden.

    
Travis M. 18.07.2016, 21:56
quelle