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?
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.
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.
Sie können seine Implementierung in Ihren Zellen überfordern. in
%Vor% 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.
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)?
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.
Tags und Links objective-c iphone