Ich habe eine, UITableView
wo die Trennzeichen nicht die volle Breite haben. Es endet wie 10 Pixel vor der linken Seite. Ich habe mit diesem Code in der viewDidLoad()
.
self.tableView.layoutMargins = UIEdgeInsetsZero;
Auch im Storyboard, wenn Sie benutzerdefinierte oder Standard-Selektoren auswählen können. Jetzt haben alle Zellen, die ausgefüllt sind, nicht die Selektoren für die volle Breite, aber die Zellen, die leer sind, haben die volle Breite.
Wie kann ich das beheben?
ios
objective-c
iphone
uitableview
Timo Cengiz
quelle
quelle
UITableView
hat eine EigenschaftseparatorInset
. Setzen Sie den Einschub desUITableView
Zeilentrennzeichens auf Null. Auch können Sie dieseparatorInset
aus dem Storyboard ändernAntworten:
Dies funktionierte bei iOS 8.4 - 9.0-Geräten mit Xcode 6.4 und Swift 1.2:
Swift 5 Update:
quelle
Ich habe die Antwort von diesem Beitrag erhalten: iOS 8 UITableView Separator Inset 0 funktioniert nicht
Fügen Sie einfach diesen Code auf Ihrem
UITableViewController
quelle
viewDidLayoutSubviews
nicht notwendigIn deinem
UITableViewCell
Gehen Sie in Ihrem Interface Builder zum Attributinspektor und ändern Sie einfach "15" in 0. Führen Sie dies für alle Zellen aus, die Sie ändern möchten.
Möglicherweise müssen Sie
[cell setLayoutMargins:UIEdgeInsetsZero];
zu Ihrem hinzufügentableViewCell
quelle
für Swift 3:
quelle
Ich erbe von
UITableViewController
und brauchte zusätzlich zu den beiden Insets EinstellungenwillDisplayCell
auch umpreservesSuperviewLayoutMargins
auf false zu setzen . In Swift sieht es so aus:quelle
preservesSuperviewLayoutMargins = false
da der Standardwert bereits falsch istUITableViewCell
left
und / oderright
Felder. (Standardmäßigleft: 15
,right: 0
)Schauen Sie, wie es funktioniert (mit
left: 100
):Ergebnis:
quelle
Der Separator
Inset
ist standardmäßig 15 von links. Ändern Sie die Separator-Inset
Option vonauto
biscustom
und setzen Sie den Einschub auf0
.quelle
Für Swift in iOS 9+
Wenn Sie eine benutzerdefinierte verwenden
UITableViewCell
:dann für dein
UITableView
inviewDidLoad
:quelle
Für Leute, die Probleme mit dem iPad haben - dies bringt Sie in einen Zustand, der mit dem iPhone identisch ist. Sie können das dann
separatorInset
nach Bedarf anpassen .quelle
Verwenden Sie es in der
cellForRowAtIndexPath
Methode,um die Trennspezifikationen der Zelle zu konfigurieren. Es funktioniert perfekt für iOS9.0 +
quelle
Getestet für iOS 9.3 & Swift 2.2. Stellen Sie sicher, dass Sie den Code,
willDisplayCell
der aufgerufen wird, unmittelbar vor dem Anzeigen der Zelle und nichtcellForRowAtIndexPath
dort einfügen, wo Sie nur die Zelle erstellen.Fügen Sie
override
der FunktionUITableViewController
Folgendes hinzu:quelle
Keines der oben genannten Verfahren hat in Swift 2.2 und Xcode 7.3.1 für mich funktioniert
Es stellte sich heraus, dass dies die einfachste Lösung von allen war. Kein Code notwendig. Ändern Sie einfach die
TableViewCell
Werte für Layoutränder in IhremUITableView
Inspektor:quelle
Für Swift 3:
quelle
In
viewDidLoad
(getestet iOS11 - Swift 4.1)Versuchen
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
quelle
Keine dieser Lösungen funktioniert auf dem iPad, aber ich habe eine Lösung gefunden, die beide Geräte abdeckt:
Mit wiederverwendbaren Zellen:
Mit nicht wiederverwendbaren Zellen:
Nur um diesen Ansatz zu erweitern:
Beide Eigenschaften können von
UITableView
& verwendet werdenUITableViewCell
. Letzteres ist in der Tat eine Eigenschaft vonUIView
, die eine Elternklasse von beidenUITableView
& istUITableViewCell
.quelle
Swift 5, Xcode 11 Update
platziere dies in viewDidLoad ()
Setzen Sie für das Trennzeichen von Kante zu Kante einfach den Wert von links und rechts auf 0.
Ändern Sie übrigens "yourTableView" in Ihren tableView Outlet-Namen.
quelle