UISearchBar überlappt die Statusleiste in iOS

Ich stoße (genau wie alle anderen hier) auf dasselbe Problem mit Überlappungen in der Statusleiste, das auch alle anderen haben, und aus diesem Grund öffne ich eine neue Frage dazu.

Es scheint einen Mechanismus zu geben, mit dem die UISearchBar weiß, wo sie sich selbst positionieren solltotal aus dem Gleichgewicht.

jaredsinclair antworte hier (iOS 7 Statusleiste zurück zu iOS 6 Standardstil in iPhone App?), erklärt ausführlich, wie die Apple-Ingenieure es uns ermöglichen, Logik in unsere Anwendung einzuführen, um sie so gut wie möglich in die Benutzerumgebung einzufügen.

Ich habe jeden UIViewController in meiner Anwendung sorgfältig geprüft und die geringste Änderung möglich gemacht.

In den meisten Fällen konnte ich das Problem mithilfe des Codes lösen, den ich in mehreren SO-Antworten gefunden habe

// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

Dies würde jedoch nicht funktionieren, egal was ich in einer bestimmten Ansicht mache, in der die UINavigationBar ausgeblendet ist.

Basierend auf der in SO gefundenen Lösung konnte ich dieses Problem lösen, indem ich diesem bestimmten UIViewController die folgende Logik hinzufügte

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    CGRect statusBarFrame =  [[UIApplication sharedApplication] statusBarFrame];
    viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}

Dies drückt den UIViewControllern Pixel nach unten "abhängig" von der Höhe der Statusleiste.

Der Effekt davon ist hier zu sehen

Das Problem Wenn ich das Suchfeld betrete, fügt die UISearchBar selbst einen 20px-Abstand oben hinzu, der die gesamte Benutzeroberfläche verschiebt.

Dies führt mich zu der Schlussfolgerung, dass die UISearchBar versucht, sich selbst anzupassen, und sich zufällig um genau den Betrag anpasst, der der Höhe der Statusleiste entspricht.

Wenn ich die Position nicht hacke, richtet diese automatische Anpassung die UISearchBar sauber unter der Statusleiste aus, sobald ich das Suchfeld betrete.

Ich hoffe, ich habe meine Verwirrung detailliert dargestellt. Ich frage mich, ob jemand irgendwelche Ideen für eine Lösung hat.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage