Dla każdego, kto chce to powielić, wykonaj następujące kroki:
- Utwórz nowy projekt iOS
- Otwórz główną scenorys i usuń domyślną / początkową
UIViewController
- Przeciągnij nowy
UITableViewController
z biblioteki obiektów
- Ustaw jako początkowy kontroler widoku
- Wprowadź do tabeli dane testowe
Jeśli wykonasz powyższe kroki, po uruchomieniu aplikacji zobaczysz, że nic, w tym dostosowanie pól wyboru Xcode do „Rozszerz krawędzie pod słupkami {Góra, Dół, Nieprzezroczyste}”, nie powoduje zatrzymania pierwszego rzędu pod paskiem stanu, nie możesz też rozwiązać tego programowo.
Np. W powyższym scenariuszu następujące działania nie przyniosą efektu:
// These do not work
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
Ten problem może być bardzo frustrujący i uważam, że jest to błąd po stronie Apple'a, zwłaszcza, że pojawia się we własnym okablowaniu UITableViewController
z biblioteki obiektów.
Nie zgadzam się ze wszystkimi, którzy próbują rozwiązać ten problem, używając dowolnej formy „magicznych liczb”, np. „Użyj delty 20px”. Ten rodzaj ściśle powiązanego programowania zdecydowanie nie jest tym, czego chce od nas Apple.
Odkryłem dwa rozwiązania tego problemu:
Zachowanie UITableViewController
sceny :
Jeśli chcesz zachować UITableViewController
scenorys bez ręcznego umieszczania go w innym widoku, możesz osadzić UITableViewController
w UINavigationController
(Edytor> Osadź w> Kontroler nawigacji) i odznaczyć „Pokazuje pasek nawigacji” w inspektorze . To rozwiązuje problem bez konieczności dodatkowego dostosowywania, a także zachowuje UITableViewController
scenę w scenorysie.
Korzystanie z funkcji AutoLayout i osadzanie jej UITableView
w innym widoku (uważam, że tak właśnie Apple chce, abyśmy to zrobili) :
Utwórz puste pole UIViewController
i przeciągnij UITableView
je. Następnie przeciągnij z wciśniętym klawiszem Ctrl w UITableView
kierunku paska stanu. Gdy mysz znajdzie się na dole paska stanu, zobaczysz dymek z autoukładem z napisem „Przewodnik po górnym układzie”. Zwolnij mysz i wybierz „Odstępy pionowe”. Dzięki temu system układu umieści go bezpośrednio pod paskiem stanu.
Przetestowałem oba sposoby na pustej aplikacji i oba działają. Konieczne może być dodatkowe ulepszenie, aby działały w Twoim projekcie.