Przeciągnąłem zwykły UITableView Jane na UIViewController w iOS 7.
Teraz istnieje pionowe przesunięcie odstępu przed rozpoczęciem pierwszej komórki. Jak się go pozbyć? Chcę, aby pierwsza linia znajdowała się znacznie bliżej górnej krawędzi miejsca, w którym faktycznie zaczyna się UITableView. Nie prosiłem o duży offset, prawda?
Jakieś pomysły?
uitableview
ios7
user798719
źródło
źródło
Odpowiedzi:
Domyślnie kontrolery widoku tabeli umieszczają zawartość pod paskiem nawigacyjnym, dzięki czemu można przewijać zawartość pod nią i wyświetlać ją w stanie rozmazanym pod paskiem nawigacyjnym / paskiem narzędzi.
Wygląda na to, że ustawiasz go na 44 (może 64) pikselach, aby usunąć go spod paska nawigacji, ale już to kompensuje, więc masz dużą lukę.
Przejdź do storyboard / xib w IB i odznacz zawartość pokazu w pasku nawigacji.
źródło
Adjust Scroll View insets
, usuń zaznaczenie.Nowa implementacja UIViewController w systemie iOS 7 ma nowy zestaw opcji, który pozwala deweloperowi wybrać, czy system automatycznie doda wstawki dla UIScrollView , UITableView i wyprowadzeń.
Aby wyłączyć to zachowanie, odznacz te pola dla wszystkich poszukiwanych UIViewControllers w InterfaceBuilder, na wybranym inspektorze obiektów UIViewController :
Po więcej szczegółów:
źródło
Z przewodnika przejścia na iOS7:
źródło
Adjust Scroll View Insets
pola wyboru dla układu kontrolera widoku.automaticallyAdjustsScrollViewInsets = NO
w kontrolerze widoku.miałem podobny problem, po odrzuceniu viewController, contentOffset z mojego tableView został zmieniony na (0, -64).
moje rozwiązanie było trochę dziwne, wypróbowałem wszystkie inne odpowiedzi, ale bez powodzenia, jedyną rzeczą, która rozwiązała mój problem, była zmiana pozycji tableView w drzewie kontrolek .xib
była to pierwsza kontrolka w widoku nadrzędnym w następujący sposób:
Przeniosłem tableView zaraz po ImageView i zadziałało:
wydaje się, że ustawienie widoku tabeli na pierwszej pozycji powodowało problem, a przeniesienie widoku tabeli na inną pozycję rozwiązało problem.
PD Nie używam autoLayout ani scenorysów
mam nadzieję, że to może komuś pomóc!
źródło
rozwiązuje mój podobny problem:
źródło
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
Spróbuj tego użyć
tableView.separatorInset = UIEdgeInsetsZero;
Oczywiście, jeśli obsługujesz coś mniejszego niż iOS7, musisz upewnić się, że obiekt odpowiada na ten selektor przed wywołaniem go.
źródło
Poważnie, zmiana
contentOffset
nie jest rozwiązaniem. Po prostu naprawiasz problem i nie naprawiasz jego przyczyny. Miałem do czynienia z tym samym problemem i okazuje się, że zgrupowane obrazy tableViews mają wypełnienie na górze. W moim przypadku ustawienie typu na zwykły załatwiło .Miejmy nadzieję, że zaoszczędzi to komuś kilku minut. Z.
źródło
W iOS 9 żadna z innych odpowiedzi z tej strony nie działała dla mnie (tj. Odznaczanie pól w Storyboard, ustawienie
automaticallyAdjustsScrollViewInsets
naNO
).Moje obejście, z którego jestem naprawdę niezadowolony, było następujące:
Te same wiersze
viewWillAppear
lubviewDidLoad
były nieskuteczne.źródło
Adjust Scroll View insets
pola wyboru działa na iOS 9.Czasami pojawia się
64
odstęp wysokości u góry mojego widoku tabeli, gdyUIViewController
jest osadzony w kontrolerze nawigacji.W przeszłości po prostu odtwarzałem wszystko, mając nadzieję, że ograniczenia okażą się poprawne po wyczyszczeniu karty.
TIL: Jeśli nie chcesz tworzyć ograniczenia pionowego do
Top Layout Guide
, możesz przytrzymaćOption
klawisz, aby uzyskać dostęp doContainer Margin
.Następnie upewnij się, że
Top Space to Superview
stała jest ustawiona na0
. To zadziałało przynajmniej dla mnie.źródło
To działa dla mnie:
źródło
Jeśli dodasz pusty UIView przed UITableView (lub dowolny widok jest przewijalny, taki jak ScrollView i TextView), możesz mieć szczęście.
źródło
Miałem UITableViewController osadzony w widoku kontenera. Aby pozbyć się niechcianych 64 punktów pionowej przestrzeni, musiałem odznaczyć `` Dostosuj wstawki widoku przewijania '' w Interface Builder i ustawić contentInset UITableView w widokuWillAppear mojego UITableViewControllera, jak poniżej.
Rozmiar pionowej przestrzeni wydaje się pasować do wysokości ramki paska nawigacji i przesunięcia y. Problem wystąpił tylko na iOS 7.
źródło
W Xamarin iOS ten problem występował na tle UITableViewController tuż po odrzuceniu modalnego okna dialogowego pierwszego planu. W trakcie przechodzenia na pierwszy plan UITableViewController miał ustawione wstawki (gdzieś przez iOS):
Ta klasa rozwiązała to
źródło
Od czasu do czasu wracam do tej okropnej sytuacji i zauważam, że wciąż jest ona dość nieznana. Więc dla przyszłej pamięci ...
Ostatnio naprawiam to obejście.
Nie pytaj mnie dlaczego, nadal uważam, że to błąd głęboko w UIKit.
źródło
Jeśli przejdziesz do scenorysu, możesz zmienić przesunięcie, wybierając tabelę, a w sekcji Widok tabeli w Inspektorze atrybutów po prostu zmieniasz wstawki separatora po lewej stronie na 0.
źródło
Myślę, że prawdziwym rozwiązaniem jest ustawienie górnych i dolnych ograniczeń w widoku tabeli, tak aby były równe górnym i dolnym marginesom. Nie jest to górna prowadnica ani dolna prowadnica. Pozwala to na zachowanie wartości true dla funkcji AutomaticAdjustsScrollViewInsets.
źródło
Rozwiązanie Swift 3:
źródło
Jeśli osadzony swoją TableViewController w NavigationController lub ContainerView,
You have to constraint to margins instead of top Layout guide in Storyboard
.Check constraint to margins when you are doing the constraints
Żaden inny sposób nie zadziałał dla mnie. Nie mogłem komentować, więc tylko powtarzam odpowiedź Roberta Chensa.źródło
Wypróbowałem kilka odpowiedzi. Zmiana ustawień w scenorysie spowodowała problemy z falowaniem w menu nakładki, które pojawia się z lewej strony.
Mam tylko pusty kontroler UIViewController w scenorysie, w przeciwnym razie wszystko jest generowane programowo.
Mam ten sam problem z UITableView wewnątrz UIView wewnątrz UIViewController. Mianowicie nagłówki sekcji zaczynają się zbyt nisko, gdy UIViewController jest osadzony w kontrolerze nawigacji. Bez kontrolera nawigacji wszystko działa dobrze.
Aby rozwiązać problem, utworzyłem UILabel i z ograniczeniami umieściłem dolne ograniczenie UILabel = górne ograniczenie UIView (więc nie jest wyświetlane na ekranie. Teraz z tą dodatkową kontrolką (nową etykietą) TableView zachowuje się poprawnie.
źródło
Miałem ten sam problem w iOS 11 i xib, UITableviewController i rozwiązałem go jak poniżej
źródło