1

私はios 7の互換性の変更に取り組んでいます。私のアプリケーションビューは、ランドスケープモードとポートレートモードで回転しています。

しかし、現在、iOS 7 のステータス バーは、すべての回転で私のビューにオーバーレイしています。次のコードを試してみましたが、うまくいきません。

私のappDelegateファイルappdidfinishlaunchingで、次のように1つの通知を設定しました:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
                                                   object:nil];
   }

これは、次のようにコールドメソッドになります。

- (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);
    }

}

アプリケーションのステータスバーを初めて起動したとき、ビューを重ねていました。そのときにiPadを2回回転すると、ステータスバーの黒い地面が別の位置に設定されます。毎回私は間違っていました。

私を助けてください、私は上記で何か間違ったことをしていますか.

可能であれば、ステータス バーのオーバーレイを停止するためのすべての回転のサンプル コードを提供してください。

4

1 に答える 1

0

You can stop the navigation bar from overlapping by using this code

self.navigationController.navigationBar.translucent = NO;
于 2013-10-11T15:14:39.040 に答える