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メソッドを使用してステータスバースタイルを設定できるように、ビューコントローラーがステータスバースタイルを調整しないようにするには)。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
!