0

前のタイトル: ステータス バー上でカスタム UIWindow を回転すると、iOS 6 で回転中に黒いバーが表示される

透明な背景色でステータス バーの上に配置するカスタム UIWindow を作成しました。

回転すると、黒いバーが表示されますが、その理由はわかりません:

ここに画像の説明を入力 ここに画像の説明を入力

これはiOS 6でのみ発生しますが、 iOS 5を搭載した私のデバイスには黒いバーが表示されません。

AppDelegateで、UIWindowを作成します。

@property (strong, nonatomic) GRWStatusBarOverlayWindow *statusBarWindow;

CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
self.statusBarWindow = [[GRWStatusBarOverlayWindow alloc] initWithFrame:statusBarFrame];
self.statusBarWindow.hidden = NO;

ステータス バー ウィンドウの rootViewController をダミーUIViewControllerに設定しました。

@interface GRWStatusBarRootViewController : UIViewController

@interface      GRWStatusBarOverlayWindow : UIWindow
@implementation GRWStatusBarOverlayWindow

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.rootViewController = [[GRWStatusBarRootViewController alloc] initWithNibName:nil bundle:nil];

        self.windowLevel = UIWindowLevelStatusBar + 1.0f;
        self.frame = frame;

        self.statusBarView = [[UIView alloc] initWithFrame:frame];
        self.statusBarView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.25];
        [self addSubview:self.statusBarView];
    }
    return self;
}

Nib を使用した場合と使用しない場合の両方、および他のいくつかのアプローチを試しましたが、完全に成功しませんでした。

私が得た最も近いものは、rootViewController nilのままにしておくと、黒いバーなしで回転しますが、メッセージは表示されます:

Application windows are expected to have a root view controller at the end of application launch

私は常にエラーや警告のないクリーンなビルドと実行を好むので、そのメッセージと黒いバーを削除する解決策を見つけたいと思います. しかし、そのメッセージが無害であれば、私はそれを受け入れます。

誰かがこの問題について何か洞察を持っていますか? ガイダンスや指示をいただければ幸いです。

4

0 に答える 0