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
UITableViewControllerz 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 UITableViewControllerz 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 UITableViewControllersceny :
Jeśli chcesz zachować UITableViewControllerscenorys bez ręcznego umieszczania go w innym widoku, możesz osadzić UITableViewControllerw 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 UITableViewControllerscenę w scenorysie.
Korzystanie z funkcji AutoLayout i osadzanie jej UITableVieww innym widoku (uważam, że tak właśnie Apple chce, abyśmy to zrobili) :
Utwórz puste pole UIViewControlleri przeciągnij UITableViewje. Następnie przeciągnij z wciśniętym klawiszem Ctrl w UITableViewkierunku 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.