Pasek nawigacji pojawia się nad widokami za pomocą nowego zestawu SDK iOS7
CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
We wcześniejszych wersjach działa poprawnie. Pasek wyszukiwania pojawia się poniżejstatusbar
i pasek nawigacyjny. Thetableview
pojawia się poniżej paska wyszukiwania
Ale kiedy to uruchomięXcode 5 sdk iOS 7
, pasek wyszukiwania nie jest widoczny (myślę, że jest umieszczony pod paskiem stanu i paskiem nawigacji), a także pasek nawigacji pojawia się nad widokiem tabeli.
Czy zostanie to naprawioneiOS 7
wersja stabilna ?
Czy jest to problem z moim kodowaniem?
Albo powinniśmy to załatwić, dodając y(y = statubar height + nav bar height)
wartość dlaiOS 7
?
Niedawno pobrałem Xcode 5 DP, aby przetestować moje aplikacje w iOS 7. Pierwszą rzeczą, którą zauważyłem i potwierdziłem, jest to, że granice mojego widoku nie zawsze zmieniają się na konto stanu i pasek nawigacji.
W viewDidLayoutSubviews wypisuję granice widoku:
{{0, 0}, {320, 568}}
Powoduje to, że moje treści pojawiają się poniżej paska nawigacji i paska stanu.
Wiem, że sam mógłbym obliczyć wysokość, pobierając wysokość głównego ekranu, odejmując wysokość paska stanu i wysokość paska nawigacyjnego, ale to wydaje się niepotrzebną dodatkową pracą.
Czy ktoś inny doświadczył tego problemu?
AKTUALIZACJA:
Znalazłem rozwiązanie tego konkretnego problemu. Ustaw przezroczystą właściwość paska nawigacji na NIE:
self.navigationController.navigationBar.translucent = NO;
To naprawi widok z ramek poniżej paska nawigacji i paska stanu.
Nie znalazłem jednak poprawki dla przypadku, gdy pasek nawigacyjny ma być przezroczysty. Na przykład, oglądając zdjęcie na pełnym ekranie, chcę, aby pasek nawigacyjny był przezroczysty, a widok był otoczony ramką. To działa, ale kiedy przełączam pokazując / ukrywając pasek nawigacyjny, doświadczyłem nawet dziwniejszych wyników. Pierwszy widok podrzędny (aUIScrollView
) pobiera swoje granice Początek zmienia się za każdym razem.