UIWindow#windowLevelについて(ステータスバーの上にボタンを置く)
UIWindowは、Viewツリーの頂点にいて最初にアプリケーション側が1個作るので、
自分で作るということはめったにないのだが、この中のプロパティwindowLevelが気になったので
ちょっと調べてみた。
windowLevelはUIWindowLevel型のプロパティである。
UIWindowLevelの中身はCGFloatだった。
もともと定義してある
UIWindowLevelNormal, UIWindowLevelStatusBar, UIWindowLevelAlertは見てみると
0.0, 1000.0, 2000.0 だった。
てことはもしかして
数字がでかいほど前に表示されるんじゃね?と思い、
例えばwindowLevelを1000〜にすると
ステータスバーの前に色々好きなもの置けるのではないかと思ったわけです。
で、やってみた
window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; window.windowLevel = 1001.0f; window.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn setTitle:@"hoge" forState:UIControlStateNormal]; [btn sizeToFit]; [window addSubview:btn]; [window makeKeyAndVisible];
でけた。
そら案内の注意報ボタンとかバッテリーマークのところに出てくるけど、
こんなかんじでやってるのかなあと思いました。