UISearchBar nakłada się na pasek stanu w iOS
Ja (tak jak wszyscy tutaj inni) wpadam na ten sam problem z nakładaniem się paska stanu, że wszyscy inni, z odrobiną niespodzianki i dlatego otwieram nowe pytanie na ten temat.
Wydaje się, że istnieje jakiś mechanizm, który pozwala UISearchBar wiedzieć, gdzie umieścić go samodzielnie, czylicałkowicie z walnięcia.
odpowiedź jaredsinclair tutaj (Pasek stanu iOS 7 wraca do domyślnego stylu iOS 6 w aplikacji na iPhone'a?), wyjaśnia bardzo szczegółowo, w jaki sposób inżynierowie Apple pozwalają nam wprowadzić logikę do naszej aplikacji, aby jak najlepiej wtopić się w środowisko użytkownika.
Przeszedłem przez proces uważnego sprawdzania każdego kontrolera UIViewControl w mojej aplikacji i umożliwienia najmniejszej modyfikacji.
W większości przypadków udało mi się rozwiązać problem za pomocą poniższego kodu, który znalazłem w kilku odpowiedziach SO
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
self.edgesForExtendedLayout = UIRectEdgeNone;
}
To jednak nie zadziała bez względu na to, co zrobię w konkretnym widoku, gdzie pasek UINavigationBar jest ukryty.
W oparciu o rozwiązanie znalezione w SO udało mi się rozwiązać ten problem, dodając następującą logikę do tego konkretnego UIViewController
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}
To popycha kontroler UIViewControllern piksele w dół „w zależności” od wysokości paska stanu.
Efekt tego jest pokazany tutaj
Problem jest tak, że gdy wchodzę w pole wyszukiwania, UISearchBar dodaje na siebie dopełnienie 20px, które wyrównuje cały interfejs użytkownika.
Prowadzi mnie to do wniosku, że UISearchBar próbuje się dopasować, i przez przypadek dostosowuje się dokładnie tak samo, jak wysokość paska stanu.
Jeśli nie włamam się do pozycji, po wejściu w pole wyszukiwania ta automatyczna regulacja wyrównuje UISearchBar starannie pod paskiem stanu.
Mam nadzieję, że szczegółowo opisałem swoje zamieszanie, zastanawiam się, czy ktoś ma jakieś pomysły na rozwiązanie.