2013-09-27 10 views
9

私は自分のアプリケーションに左側のメニューを実装することに興味があります。NVSlideMenuControllerを使っています。それはうまく動作します。スライディングステータスバーを備えたスライディングサイドメニューも実装します。 iOSの場合

しかし、私はそれを変更したいと思います。私はcontentViewControllerでステータスバーをスライドしたいし、MenuViewControllerでステータスバーをしたくないです。

現在、それは画像

enter image description here

以下のようになりますし、私は、おかげで事前

+1

が有効ではなく、唯一のいくつかの操作を介して「移動」することができません。 [このSOの投稿]を参照してください(http://stackoverflow.com/a/19011013/2740693) –

+1

[iOS 7の移動ステータスバー]の複製が可能です。(http://stackoverflow.com/questions/19007694/moving-status- bar-in-ios-7) – codercat

答えて

11

、あなたはステータスバーが更新されていないことがわかります。

それは、iOS7

で新しいAPIのように思えます
[[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO]; 

これはあなたが聞いたのと同じ質問かもしれないし、あなたが望むものを示すためのデモがあります。

Moving status bar in iOS 7

1

であなたはするつもりはない画像

enter image description here

以下と同じにしたいですステータスバーを動かすことができます。

- (void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    if (animated) 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
    } 
    else 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    } 
} 

- (void) viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    if (animated) 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 
    } 
    else 
    { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    } 
} 

最高に見えるものを見るためにUIStatusBarAnimationの異なる値で遊んで試してみてください:あなたができる最善のは、そのビューコントローラのためにそれを隠しています。 3つの値:UIStatusBarAnimationNoneUIStatusBarAnimationFade、およびUIStatusBarAnimationSlide`があります。

+0

左メニューを開いている間、ステータスバーがスライドしているメールボックスアプリケーションが表示されましたか?私は同じことが欲しい。 – Pratik

+0

UIApplicationには、statusBarFrame([[UIApplication sharedApplication] .statusBarFrame)というプロパティがあります。それをCG画像コンテキストにレンダリングし、その画像で画像ビューを作成してから、ステータスバーを隠して画像ビューを移動することができます。これはステータスバーの移動を "偽造"しますが、動的コンテンツは表示されません。 – paulrehkugler

+0

または、ステータスバーの表示を取得するためにhitTest:-ingを試すことができます。これはおそらくあなたがやりたいとは思わないものなので、難しいでしょう。 – paulrehkugler

2

あなたはkeyWindowの枠を連鎖することによってこれを行うことができるかもしれません(あなたは。これは、すべての権利を移動する必要があります)[[UIApplication sharedApplication] keyWindow]UIWindowUIViewのサブクラスであると、これを取得することができ、あなたが持って別のUIWindowを作成する必要があるかもしれません左から上の他のもの。あなたが第二の画像の上にあなたの3Gをオフにしようとすることができます

0

これは答えが、コメントの書式設定の休憩ため、ジェームズの答えへの応答ではありません。

実際、keyWindowのフレームを設定すると、ステータスバーを移動できなくなります。ブレークポイントを設定し、keyWindowの再帰的な記述を印刷することで、内部にステータスバー情報がないことがわかります。 Simon's答えに

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription] 
<UIWindow: 0x8c5bf80; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x8c5c500>; layer = <UIWindowLayer: 0x8c5c0a0>> 
    | <UIView: 0x8b49700; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x8b496b0>> 
(lldb) 

フォローChris'sリンクは、ステータスバーを動かす仕事

関連する問題