2009-07-30 7 views
3

Ich habe eine meist navigationsgesteuerte Anwendung. In einigen Fällen muss eine modale Ansicht angezeigt werden. In einem dieser Fälle muss die Statusleiste ausgeblendet werden. Auch wenn ich die Statusleiste ausgeblendet habe, bevor die modale Ansicht angezeigt wird, ist die Ansicht um 20 Pixel versetzt.Wie kann das Verbergen einer UIStatusBar auf UIViews angewendet werden?

Auch wenn ich den Rahmen der modalen Ansicht nach dem Anzeigen der Ansicht auf 0, -20,320,480 festlegen, schneidet es den oberen Teil der Ansicht ab.

Ich möchte auch, dass der Benutzer in der Lage ist, die Statusleiste (und eine Symbolleiste) beim Tippen auf den Bildschirm offenbaren, so wie der Videoplayer funktioniert. Also habe ich den Stil für diesen Bildschirm auf schwarz transparent gesetzt, und ich hoffe, dass das Verstecken oder Anzeigen der Statusleiste nicht dazu führen würde, dass die Ansicht auf und ab springt.

Antwort

2

Aufgrund Ihres Kommentars unten, dass Sie iPhone OS 2.x ausrichten, habe ich einen Vorschlag, der Ihnen helfen könnte.

Bevor Sie modale Ansicht präsentiert, etwas tun, wie folgt aus:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
    [[self view] setFrame:CGRectMake(0, 0, 320, 480)]; 

Stellen Sie sicher, dass Ihre modal Ansicht ist tatsächlich 480px groß - eine Zeit, die ich durch die leeren 20px Platz am unteren Ende zum Narren gehalten wurde. Es stellte sich heraus, dass meine Ansicht immer noch 460 Pixel groß war (um die Statusleiste zu berücksichtigen), also funktionierte der Code tatsächlich, aber meine Ansicht war nicht die richtige Höhe.

Wenn Ihre modal Ansicht versteckt, das funktioniert:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; 
[[self view] setFrame:CGRectMake(0, 20, 320, 460)]; 

Sie haben vielleicht den Code ein wenig zu drehen, wenn Sie presentModalViewController verwenden - ich dieses -addSubview mit ausprobiert, weil ich eine benutzerdefinierte Animation wurde mit. Die Grundprinzipien sollten jedoch dieselben sein (d. H. Ändern des Rahmens der Elternansicht).

+0

Ich hatte tatsächlich schon so etwas wie diese Implementierung, und es funktionierte gut genug auf dem Gerät, das 2.x auf 3.0 hatte, jedoch hat dies mehr seltsame Fehler, aus irgendeinem Grund, also arbeite ich an etwas, das dies verwenden wird für 2.x-Geräte und wird [self setWantsFullscreenDisplay: YES] aufrufen, wenn [self responsesToSelector: @selector (setWantsFullscreenDisplay :)]. Ich bin mir nicht sicher, ob das funktionieren wird, aber ich mache mir einen Strich durch die Rechnung. –

+0

Welche seltsamen Fehler bekommen Sie? Ich mache das eigentlich in meiner OS 3.0 App und es funktioniert gut. –

+0

Werfen Sie auch einen Blick auf diese SO-Frage und die akzeptierte Antwort für die verschiedenen OS-Versionen: http://stackoverflow.com/questions/820142/how-to-target-a-specific-iphone-version –

2

Haben Sie in der wantsFullScreenLayout Eigenschaft auf UIViewControllers geschaut?

+0

Leider arbeite ich in 2.x, nicht 3.0 –

+0

Warum arbeiten Sie nicht an 3.0? –

+0

Dies ist eine API von 3.0. Ich denke nicht, dass es in 2.x lösbar ist. Aber ich bin überhaupt nicht sicher ... –

Verwandte Themen