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żej statusbar
paska nawigacji i. Pojawia tableview
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 naprawione w iOS 7
wersji stabilnej?
Czy jest to problem z moim kodowaniem?
A może powinniśmy to zrobić, dodając (y = statubar height + nav bar height)
wartość y dla iOS 7
?
Niedawno pobrałem Xcode 5 DP, aby przetestować swoje aplikacje w iOS 7. Pierwszą rzeczą, jaką zauważyłem i potwierdziłem, jest to, że granice mojego widoku nie zawsze są zmieniane w celu uwzględnienia paska stanu i paska nawigacji.
W viewDidLayoutSubviews, drukuję granice widoku:
{{0, 0}, {320, 568}}
Powoduje to, że moja zawartość pojawia się poniżej paska nawigacji i paska stanu.
Wiem, że sam mógłbym uwzględnić wysokość, uzyskując wysokość głównego ekranu, odejmując wysokość paska stanu i wysokość paska nawigacji, ale wydaje się to niepotrzebną dodatkową pracą.
Czy ktoś jeszcze 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;
Spowoduje to usunięcie ramki widoku pod paskiem nawigacji i paskiem stanu.
Jednak nie znalazłem rozwiązania dla przypadku, gdy chcesz, aby pasek nawigacji był półprzezroczysty. Na przykład, przeglądając zdjęcie na pełnym ekranie, chciałbym, aby pasek nawigacji był półprzezroczysty, a widok znajdował się pod nim. To działa, ale kiedy przełączam wyświetlanie / ukrywanie paska nawigacyjnego, doświadczyłem jeszcze dziwniejszych wyników. Pierwszy widok podrzędny (a UIScrollView
) zmienia swoje granice y pochodzenia za każdym razem.