どんどこすすむの日記

どんどこすすむオフィシャルブログ

iOS8でローテーションするとUIWebViewのステータスバーの表示がおかしい

f:id:dondoko_susumu:20150227161052p:plain:w500

とあるアプリを開発中、UIWebViewの画面で横向きにローテーションすると、こんなところにステータスバーが表示された。
iOS7では起こらない。
はじめiOSシュミレータのバグかな、と思ったが、プロジェクトを新規作成して単純な構成で確認してみると再現しなかった。
なんでーなんでーと思って、いろいろ比較して確認してみると
アプリ起動時、条件によって初期表示viewを切り変えている部分が原因だった。

問題を起こしている箇所

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *view = [storyboard instantiateViewControllerWithIdentifier:@"storyboard_top"];
    self.window.rootViewController = view;
    [self.window makeKeyAndVisible];

アプリ起動時にストーリーボードを読み込んで初期表示するviewを設定している。
下記の1行をコメント

//    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

一応、これで問題が解消された。
初期表示の切り替え動作にも影響はなさそう。 原因はわからん、iOS8の画面サイズの考え方のアレコレだと想像するけど、、
もともとこのコードもどこかからのコピペで、あまり理解せず使っている。