SVProgressHUDのオーバーレイが表示されても、常に最前面にビューを表示したい
SVProgressHUDのオーバーレイはこんな感じで上位のビュー(というかウィンドウ)に登録されている。
if(!self.overlayView.superview){ NSEnumerator *frontToBackWindows = [[[UIApplication sharedApplication]windows]reverseObjectEnumerator]; for (UIWindow *window in frontToBackWindows) if (window.windowLevel == UIWindowLevelNormal) { [window addSubview:self.overlayView]; break; } }
多分、UIWindowLevelNormalより優先度の高いウィンドウを自作すればSVProgressHUDのオーバーレイの上にビューを表示できるけど、UIWindowのAPIに「自分でウィンドウを作るな」と書いてある。
仕方がないのでこのようにしている。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self.window makeKeyAndVisible]; [self.window addSubview:ビュー]; return YES; }
そして、SVProgressHUDのラッパーのようなものを作ってオーバーレイ表示後にこうする。
[ビュー.superview bringSubviewToFront:ビュー];