[iOS][iOS12]UIWebViewにおいて動画再生後にステータスバーが変更されてしまう


UIWebViewでiOS12の場合に、以前のOSと挙動が変わったのでメモ。

[現象]
UIWebViewで動画を再生後、閉じるとステータスバーの色が変わってしまう。

[ソース元]
https://stackoverflow.com/questions/52136497/status-bar-disappeared-after-full-screen-video-in-wkwebview-only-in-ios-12

[条件]
Info.plistのみにステータスバーの設定を実装している場合に発生する。

・Status bar is initially hidden
・View controller-based status bar appearance
・Status bar style : UIStatusBarStyleLightContent

[解決策]
Info.plistに記述したステータスバーのプロパティをすべて削除し、代わりに実装ファイルに記述をする。
ちなみに、ソース元では「Status bar style:UIStatusBarStyleLightContent」で試してあったが、手元でUIStatusBarStyleDefaultを試したところ正常に動作した。プロジェクトのUIに合わせて実装すると良い。

[実装例]

UINavigationControllerExtension.h
#import "UINavigationControllerExtension.h"

@interface UINavigationControllerExtension()

@end

@implementation UINavigationControllerExtension

- (void)viewDidLoad
{
    [super viewDidLoad];
    [UIApplication sharedApplication].statusBarHidden = NO;
}

- (BOOL)prefersStatusBarHidden
{
    return NO;
}

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleDefault;
}


@end

[追記]
※走り書きで書いてしまったため、記述を若干修正しました。