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.

questionAnswers(6)

yourAnswerToTheQuestion