前のタイトル: ステータス バー上でカスタム 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
私は常にエラーや警告のないクリーンなビルドと実行を好むので、そのメッセージと黒いバーを削除する解決策を見つけたいと思います. しかし、そのメッセージが無害であれば、私はそれを受け入れます。
誰かがこの問題について何か洞察を持っていますか? ガイダンスや指示をいただければ幸いです。