Mam UITableView
gdzie separatory nie mają pełnej szerokości. Kończy się jak 10 pikseli przed lewą stroną. Bawiłem się tym kodem w viewDidLoad()
.
self.tableView.layoutMargins = UIEdgeInsetsZero;
Również w scenorysie, kiedy możesz wybrać selektory niestandardowe lub domyślne. Teraz wszystkie wypełnione komórki nie mają selektorów o pełnej szerokości, ale komórki, które są puste, mają pełną szerokość.
Jak mogę to naprawić?
ios
objective-c
iphone
uitableview
Timo Cengiz
źródło
źródło
UITableView
posiada własnośćseparatorInset
. Ustaw wstawkęUITableView
separatora linii na zero. Możesz także zmienićseparatorInset
z storyboarduOdpowiedzi:
To zadziałało dla mnie na urządzeniach iOS 8.4 - 9.0 przy użyciu Xcode 6.4 i Swift 1.2:
Aktualizacja Swift 5:
źródło
Otrzymałem odpowiedź z tego postu: Wstawka separatora UITableView w iOS 8 nie działa
Po prostu dodaj ten kod do swojego
UITableViewController
źródło
viewDidLayoutSubviews
nie jest koniecznaW Twoim
UITableViewCell
Przejdź do Inspektora atrybutów w swoim Interface Builder i po prostu zmień „15” na 0. Zrób to dla wszystkich komórek, które chcesz zmienić.
Może być konieczne dodanie
[cell setLayoutMargins:UIEdgeInsetsZero];
dotableViewCell
źródło
dla Swift 3:
źródło
UITableViewCell
left
i / lubright
pola. (Domyślnieleft: 15
,right: 0
)Zobacz, jak to działa (używając
left: 100
):Wynik:
źródło
Dziedziczę z
UITableViewController
dwóch ustawień wstawek i potrzebowałem ich dodatkowych,willDisplayCell
aby ustawić wartośćpreservesSuperviewLayoutMargins
fałsz. W Swift wygląda to tak:źródło
preservesSuperviewLayoutMargins = false
ponieważ wartość domyślna jest już falseSeparator
Inset
jest domyślnie ustawiony na 15 od lewej. ZmieńInset
opcję separatora zauto
nacustom
i ustaw wstawkę na0
.źródło
Dla Swift w iOS 9+
Jeśli używasz niestandardowego
UITableViewCell
:wtedy dla twojego
UITableView
wviewDidLoad
:źródło
Dla osób, które mają problemy z iPadem - dzięki temu uzyskasz taki sam stan jak iPhone. Następnie możesz dostosować w
separatorInset
razie potrzeby.źródło
Użyj go w
cellForRowAtIndexPath
metodzie, aby skonfigurować specyfikacje separatora komórki,działa idealnie na iOS9.0 +
źródło
Przetestowano na iOS 9.3 i Swift 2.2. Upewnij się, że kod,
willDisplayCell
który jest wywoływany, znajduje się tuż przed wyświetleniem komórki, a nie wcellForRowAtIndexPath
miejscu, w którym tworzysz samą komórkę.Dodaj
override
do funkcjiUITableViewController
, na przykład:źródło
Żadne z powyższych nie działało dla mnie w Swift 2.2 i Xcode 7.3.1
Okazało się, że jest to najprostsze rozwiązanie ze wszystkich. Nie potrzeba żadnego kodu. Po prostu zmień
TableViewCell
wartości Layout Margins w swoimUITableView
Inspektorze:źródło
Dla Swift 3:
źródło
W
viewDidLoad
(testowany iOS11 - swift 4.1)próbować
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
źródło
Żadne z tych rozwiązań nie działa na iPadzie, ale wymyśliłem rozwiązanie, które obejmuje oba urządzenia:
Z ogniwami wielokrotnego użytku:
Z ogniwami jednorazowego użytku:
Aby rozwinąć to podejście:
Obie właściwości mogą być używane przez
UITableView
&UITableViewCell
. Ta ostatnia jest w rzeczywistości właściwościąUIView
, która jest klasą nadrzędną obuUITableView
&UITableViewCell
.źródło
swift 5, Xcode 11 Update
umieść to w widokuDidLoad ()
dla separatora od krawędzi do krawędzi po prostu ustaw wartość lewego i prawego na 0.
przy okazji zmień „yourTableView” na nazwę TableView Outlet.
źródło