indentationLevel-Eigenschaft scheint nichts zu tun?

7

Ich habe eine Anzahl Zeilen, die ich mit -insertRowsAtIndexPaths: withRowAnimation in eine Tabelle einfüge, und möchte, dass die Zeilen von links eingerückt werden, um sie vom Rest der Zellen zu unterscheiden. Die Eigenschaft indentationLevel von UITableViewCell sieht aus, als ob es genau das ist, was ich brauche, aber es scheint nichts zu tun. Hier ist der Code, den ich verwende, um die Einrückungsebene festzulegen (die Punktsyntax macht keinen Unterschied):

%Vor%

Ist indentationLevel, was ich will, oder sollte ich woanders suchen?

    
JoBu1324 20.08.2009, 01:35
quelle

6 Antworten

14

indentationLevel und indentationWidth beeinflussen die Positionierung der Standardelemente textLabel, detailTextLabel und imageView. Sie haben keinen Einfluss auf den Ursprung des Frames von contentView.

Wenn Sie nicht textLabel, etc. verwenden (vielleicht weil Sie auf iPhone OS 2 ausgerichtet sind), müssen Sie den Einzug manuell behandeln, wie die vorherige Antwort zeigt.

    
Justin Bur 01.12.2009 22:46
quelle
3

Dies scheint ein Fehler in iOS 7 zu sein, wenn Sie keine benutzerdefinierten Zellen verwenden.

Die Einstellung von indentationLevel oder indentationWidth in tableView:cellForRowAtIndexPath: hat keine Auswirkung auf das Layout der Zelle, wenn es Zeit ist, sie anzuzeigen.

Betrachten Sie zum Beispiel den folgenden Code:

%Vor%

Ich habe nicht genug Reputation, um Screenshots zu posten, aber das Ergebnis unterscheidet sich zwischen iOS 6 und iOS 7. Dies ist mit Xcode 5 und dem iOS 7 SDK.

    
Skyboat 22.02.2014 16:02
quelle
1

Sie können seine Implementierung in Ihren Zellen überfordern. in

%Vor%     
JDPearlman 25.10.2009 15:28
quelle
1

Ich stieß auf ein ähnliches Problem mit meiner App. Ich hatte eine UITableView , die keine benutzerdefinierten Zellen verwendet. Ich habe UITableViewCell mit einem Basic-Stil verwendet. In meiner - (UITableViewCell *)tableView: cellForRowAtIndexPath: Delegate Methode setze ich die indentationWidth und indentationLevel der Zelle. Sie haben nichts getan. Ich habe sogar versucht, die Methode - (NSInteger)tableView: indentationLevelForRowAtIndexPath: delegate zu ändern. Nichts.

Was letztendlich funktioniert hat, war, dass wir zum Storyboard gegangen sind und die Attribute der Tabellenansichtszelle selbst geändert haben. Sobald ich die Einrückbreite dort eingestellt habe, habe ich angefangen, richtige Einrückung zu bekommen. Die Eigenschaft indentationLevel hat begonnen zu arbeiten. Sogar die - (NSInteger)tableView: indentationLevelForRowAtIndexPath: war nützlich.

Im Grunde scheint es so, als ob die indentationWidth -Eigenschaft zugunsten der "Einrückungsbreite" im Storyboard ignoriert wird.

Dies war mit Xcode 5.0.2, das auf iOS 7 abzielt.

    
Erik Allen 28.01.2014 19:56
quelle
0

Alles, was ich gelesen habe, deutet darauf hin, dass du es so machen sollst. Stellen Sie sicher, dass Sie später im Code keine neue Zelle mit demselben Zeiger erstellen (nachdem Sie den Einzug festgelegt haben, aber bevor er gezeichnet wird). Haben Sie versucht, die Einrückung auf etwas Größeres zu setzen, das auf dem Bildschirm deutlicher ist (sagen wir 100px anstelle von 10)?

    
Cinder6 20.08.2009 02:08
quelle
0

Ich weiß, dass diese Frage 4 Jahre alt ist. Wenn Sie jedoch bereits eine benutzerdefinierte Unterklasse von UITableViewCell verwenden, und , fügen Sie Ihre Ansichten bereits als Unteransichten von% hinzu. co_de% stelle sicher, dass du contentView in deiner Zelle nicht überschreibst. Wenn dies der Fall ist, müssen Sie die Grenzen / Mitte oder den Rahmen von contentView manuell in layoutSubviews anpassen.

    
taber 22.06.2014 16:17
quelle

Tags und Links