2013-12-22 11 views
6

ステータスバーを削除することは可能ですが、フレームを非表示に設定すると、ステータスバーの高さ分だけフレームが上に移動します。したがって、次のコード:iOS 7ステータスバーのテキストをフェードインまたはフェードアウトしますか?

[UIApplication sharedApplication].statusBarHidden = YES; 

は、ステータスバーのテキストを隠すだけでは不十分です。私が最終的にここで達成しようとしていることは、サイドメニューが表示され、ステータスバーのテキストが非表示になってから、選択が行われるとステータスバーのテキストでフレームが通常に戻ります表示されます。

This questionは、ステータスバーの非表示をアニメーション化する方法を示しますが、その結果、ウィンドウ全体がステータスバーの高さ分だけ上に移動します。私はそれが起こるのを避けようとしています。

+0

セット「ビュー・コントローラ・ベースのステータスバーの外観」:

UIApplication.sharedApplication().delegate?.window!!.windowLevel = UIWindowLevelStatusBar 

とテキストをデフォルトと示すために、ステータスバーをリセットするために:私は、ステータスバーのテキストを非表示をするために、次を使用していました.plistとフェードアニメーションを試してみましょう –

答えて

8

のObjective-Cのバージョン:

[AppDelegate instance].window.windowLevel = UIWindowLevelStatusBar; 

スウィフトバージョン:どういうわけかゼロの中の私のコードの結果に次のコードを適用

AppDelegate().window!.windowLevel = UIWindowLevelStatusBar 
2

これはそれを行う必要があります。しかし、ハックのビットです:

NSString *key = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x61, 0x72} length:9] encoding:NSASCIIStringEncoding]; 
id object = [UIApplication sharedApplication]; 
UIView *statusBar; 
if ([object respondsToSelector:NSSelectorFromString(key)]) { 
    statusBar = [object valueForKey:key]; 
} 
[UIView animateWithDuration:0.3 
        animations:^{ 
         statusBar.alpha = 0.0f; 
        } 
]; 
+0

'(unsigned char []){0x73、0x74、0x61、0x74、0x75、0x73、0x42、0x61、0x72}' ...なぜ "statusBar"文字は何ですか?推測すると、ステータスバー.. 0x74 = 0x73 + 1とt = s + 1 –

+2

これはAppleの小切手の周りにあるためです。 – runmad

+3

アップルの小切手を巡っているかどうかにかかわらず、ひどい解決策。 iOS7.1ではどうなりますか? 7.2? 8.0? –

0

アンラップオプション

AppDelegate().window!.windowLevel = UIWindowLevelStatusBar 

でNOに

UIApplication.sharedApplication().delegate?.window!!.windowLevel = UIWindowLevelNormal 
関連する問題