2013 年 9 月 19 日の更新:
追加によるスケーリングのバグを修正
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
NSNotificationCenter
発言の誤字を修正
2013 年 9 月 12 日の更新:
UIViewControllerBasedStatusBarAppearance
に修正NO
画面回転のあるアプリのソリューションを追加
ステータスバーの背景色を変更する方法を追加しました。
どうやら、iOS7 のステータス バーを iOS6 での動作に戻す方法はないようです。
ただし、いつでもいくつかのコードを記述して、ステータス バーを iOS6 風に変えることができます。これが私が思いつく最短の方法です。
in にUIViewControllerBasedStatusBarAppearance
設定( UIApplicationstatusBarStyle メソッドを使用してステータス バーのスタイルを設定できるように、View Controller でステータス バーのスタイルを調整することをオプトアウトするには)。NO
info.plist
AppDelegate のapplication:didFinishLaunchingWithOptions
で、呼び出します
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
//Added on 19th Sep 2013
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
}
return YES;
そうするには:
iOS 7 かどうかを確認します。
UIStatusBarStyleDefault ではなく、ステータス バーのコンテンツを白に設定します。
フレームが表示されている境界を超えて拡張しているサブビューが表示されないようにします (上からメイン ビューにアニメーション化するビューの場合)。
アプリのウィンドウ フレームを移動およびサイズ変更することで、iOS 6 のようにステータス バーがスペースを占めるように錯覚させます。
画面回転のあるアプリの場合、
NSNotificationCenter を使用して、追加することで向きの変化を検出します
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
でif (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
、AppDelegate に新しいメソッドを作成します。
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
int w = [[UIScreen mainScreen] bounds].size.width;
int h = [[UIScreen mainScreen] bounds].size.height;
switch(a){
case 4:
self.window.frame = CGRectMake(0,20,w,h);
break;
case 3:
self.window.frame = CGRectMake(-20,0,w-20,h+20);
break;
case 2:
self.window.frame = CGRectMake(0,-20,w,h);
break;
case 1:
self.window.frame = CGRectMake(20,0,w-20,h+20);
}
}
そのため、向きが変わると、アプリの画面の向き (縦、逆さま、横左、または横右) を検出するための switch ステートメントがトリガーされ、アプリのウィンドウ フレームがそれぞれ変更され、iOS 6 のステータス バー イリュージョンが作成されます。
ステータス バーの背景色を変更するには:
追加
@property (retain, nonatomic) UIWindow *background;
でクラスにプロパティAppDelegate.h
を作成background
し、ARC がその割り当てを解除しないようにします。(ARC を使用していない場合は、これを行う必要はありません。)
その後、次のように UIWindow を作成する必要がありますif (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
。
background = [[UIWindow alloc] initWithFrame: CGRectMake(0, 0, self.window.frame.size.width, 20)];
background.backgroundColor =[UIColor redColor];
[background setHidden:NO];
@synthesize background;
後を忘れないでください@implementation AppDelegate
!