2009-10-09 11 views
39

Mam TabBarController, jeden z zakładek, który zawiera widok podrzędny, który jest navigationController. Następnie ładuję do kontrolera nawigacyjnego widok, który dziedziczy formularz UITableViewController.Górny margines na UITableViewController

Mój problem polega na tym, że widok tabeli zaczyna się od kontrolera nawigacyjnego, a nie od górnej części ekranu, ale mniej więcej w połowie paska nawigacyjnego, dlatego górna część pierwszej komórki w widoku tabeli jest obcięta.

Czy ktoś może sugerować, jak przenieść kontroler UITableViewController w dół?

Odpowiedz

-1

Można ustawić ramkę UITableView na wyraźne pozycje X, Y, ustawiając właściwość ramki w widoku. Możesz też zmienić tę samą właściwość za pomocą konstruktora interfejsu, w zależności od tego, czy dodałeś widok tabeli przez IB, czy w kodzie.

np.

myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height); 

To pozycjonować stół mojatabela (co jest wskaźnikiem do UITableView) poniżej paska nawigacji, może być konieczne, aby dostosować wysokość stołu odpowiednio. Wysokość paska nawigacji, którą wskazuję ze stałą, wynosi 44,0.

Zwykle dokonuję tego rodzaju korekty widoku, jeśli było to konieczne w viewWillAppear kontrolera widoku odpowiedzialnego. Nie jest powszechne, że będziesz musiał dokonać tego typu korekty, więc może to być coś, co możesz naprawić zmieniając sposób konfigurowania widoków.

Bez szczegółowych informacji na temat konfiguracji widoku trudno jest być bardziej szczegółowym.

98

Fix programowo:

- (void)viewDidLoad { 
     UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0); 
     self.tableView.contentInset = inset; 
    } 
+2

Działa to świetnie, ale paski przewijania są trochę pomieszane. Podłużają się tutaj pod paskiem nawigacji. To tak, jakbyśmy musieli zmienić ramkę, zamiast tylko dodawać edgeInset do przewijania. Ale to ponowne kadrowanie nie działa –

+4

@ chuckp16 Możesz również dodać 'self.tableView.scrollIndicatorInsets = inset;' – dokkaebi

+4

(64, 0, 0, 0) działa najlepiej dla standardowych UINavigationBars (bez podpowiedzi). – eulr

7

Ten „schowany za pasek nawigacji” problem wynika z iOS 7 stosując układ pełnoekranowy automatycznie. See the iOS 7 Transition Guide.

To trochę podstępne, ponieważ jest wyświetlane jako jak w iOS 6 w Symulatorze (układ-mądry, tj. Nie schowany za).

Czy pasek nawigacji jest półprzezroczysty? Mój był i ustawiał go na nieprzezroczyste poprawki na Iphone iOS 6, iPhone iOS 7 i Simulator 7.0 z XCode 5. (W moim przypadku ustawiłem go na półprzezroczysty dla wizualnego wyglądu.)

+0

Hah! Właśnie sprawdziłem daty ... nie chodziło o układ iOS 7, prawda? :) Gah. Cóż, myślę, że mógłbym go zostawić na wypadek, gdyby był to pierwszy hit ludzi, którzy szukają tego problemu w dzisiejszych czasach, tak jak ja. –

+0

Dzięki za pozostawienie tego. Pomogło mi to. – jeffreymatthias

+0

Mimo że nie było tak w przypadku pierwotnego pytania, jest to bardzo przydatna odpowiedź! – erdekhayser

Powiązane problemy