Czy komórki UITableView
pokazu wyświetlają się w pustym miejscu podczas przewijania w dół?
Jeśli tak, przyczyną problemu może być wstawka dodana do elementu z UITableView
powodu kontrolera nawigacji, który masz w widoku. Wstawka jest dodawana do widoku tabeli, aby zawartość została umieszczona poniżej paska nawigacji, gdy nie nastąpiło przewijanie. Gdy tabela jest przewijana, jej zawartość jest przewijana i wyświetlana pod przezroczystym paskiem nawigacyjnym. To zachowanie jest oczywiście pożądane tylko wtedy, gdy widok tabeli rozpoczyna się bezpośrednio pod paskiem nawigacji, co nie ma miejsca w tym przypadku.
Inną rzeczą, na którą należy zwrócić uwagę, jest to, że iOS dostosowuje wstawkę zawartości tylko dla pierwszego widoku w hierarchii widoków, jeśli jest UIScrollView
lub jest to element podrzędny (np. UITableView
I UICollectionView
). Jeśli hierarchia widoków obejmuje wiele widoków przewijania, automaticallyAdjustsScrollViewInsets
dostosuje tylko pierwszy.
Oto jak zmienić to zachowanie:
a) Konstruktor interfejsu
- Wybierz kontroler widoku
- Otwórz inspektora atrybutów
W inspektorze atrybutów IB (gdy wybrany jest kontroler widoku) istnieje właściwość o nazwie „Dopasuj wstawki widoku przewijania”, która jest domyślnie włączona. Odznacz tę opcję:
(Zdjęcie dzięki uprzejmości Dheeraj D )
Nie jestem pewien, która wersja Xcode wprowadziła tę opcję (nie zauważyłem jej w informacjach o wydaniu), ale jest ona przynajmniej dostępna w wersji 5.1.1.
Edycja: aby uniknąć nieporozumień, była to trzecia opcja wymieniona w komentarzach
b) Programowo
Dodaj to do ie viewDidLoad
( podziękowania dla odpowiedzi Slavco Petkovskiego i komentarza Cris R )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Może to mieć znaczenie dla starszych uczniów
Możesz to naprawić, dodając
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Lub jeśli używasz IB i pasek nawigacji nie jest przezroczysty (nie można tego stwierdzić na zrzucie ekranu)
- Wybierz kontroler widoku
- Otwórz inspektora atrybutów
- W widoku Opcje kontrolera w sekcji Rozszerz krawędzie usuń zaznaczenie opcji „Pod górnymi paskami”