Hinzufügen eines UINavigationController als Untersicht von UIView
Ich versuche, die Anzeige UILabel auf der Spitze eines UINavigationController. Das problem ist, dass wenn ich das UILabel, wie eine Untersicht des UIWindow es wird nicht automatisch gedreht, da es nicht eine Untersicht von UIViewController (UIViewController automatisch für die Aktualisierung Untersichten bei den umdrehungen).
Dies ist die Hierarchie war ich mit:
- UIWindow
- UILabel
- UINavigationController
So, ich dachte, ich könnte die folgende Hierarchie:
- UIWindow
- UIViewController
- UIView
- UILabel
- UINavigationController
- UIView
- UIViewController
Diese Weise wird das label angezeigt werden könnte auf der Oberseite des UINavigationController der bar, während auch automatisch gedreht werden, da es ist eine Untersicht von UIViewController.
Das problem ist, dass wenn ich versuchen Sie, ein UINavigationController als Untersicht eine Ansicht:
[myViewController.view addSubview:myNavigationController.view];
erscheinen wird 20 Pixel nach unten. Ich bin zu raten ist, weil es denkt, es braucht, um Platz zu machen für die status bar. Aber, da der UINavigationController ist platziert in einem UIView, die nicht-overlay auf der Oberseite des status-bar, es ist falsch das hinzufügen einer zusätzlichen 20 Pixel. In anderen Worten, die oben in der UINavigationBar ist auf dem Bildschirm ist 40 pixel-mark statt 20 Pixel.
Gibt es keine einfache Möglichkeit, nur eine Verschiebung der UINavigationController und alle Ihre Elemente (z.B. navigation bar, tool bar, root-view-controller) bis 20 Pixel? Oder um ihn wissen zu lassen, dass es auch kein Ausgleich für die status bar?
Wenn nicht, denke ich, würde ich brauchen, um meine erste Hierarchie oben erwähnt, und herauszufinden, wie Sie drehen Sie das Etikett, so dass es im Einklang mit der Navigationsleiste rotation. Wo kann ich weitere Informationen finden auf wie Sie dies tun?
Hinweis: durch die "Anzeige ein Etikett auf der Oberseite der navigation bar", ich meine, es sollte-overlay auf der Oberseite der navigation bar... kann es nicht einfach sein, eingewickelt in ein bar button item und als eines der Elemente der Navigationsleiste.
InformationsquelleAutor der Frage Senseful | 2010-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe dieser code scheint zu funktionieren:
Ich Tat dies, bevor Sie den navigation-controller als Untersicht. Mit der [UIApplication sharedApplication].statusBarFrame statt der hard codierten 20 wäre wohl eine gute Idee.
Ich bin mir nicht sicher, ob es der beste Weg, es zu tun, obwohl.
InformationsquelleAutor der Antwort Senseful
Wenn Sie möchten, dass ein frame repräsentiert die verfügbaren content-Bereich, dann sollten Sie nur verwenden:
[[UIScreen mainScreen] applicationFrame]
. Natürlich, dies schränkt Ihre top-level-view-controller so, dass nur die oberste Ebene. Also immer noch eine Art von zwielichtigen, aber weniger so.InformationsquelleAutor der Antwort Casebash
Warum verwenden nicht Sie App-Frame anstelle von hinzufügen einige Werte zu origins? Ich meine, mit:
als ein Referenz-frame, und etwas wie das hier tun:
Diese funktionierte für mich.
InformationsquelleAutor der Antwort superkeci
Ich hatte das gleiche problem eigentlich, aber Sie schaffte es, es zu beheben.
Bemerkte ich, dass meine view-controller-Sicht der richtige Rahmen, aber die view-controller in der Navigationsleiste nicht (es hatte ein Gestell Herkunft (0,20) ).
Fügen Sie diese in die Ansicht-controller, ist der superview der navigation-controller:
InformationsquelleAutor der Antwort Matt Toohey