IOS9新特性 最頂層window決定狀態(tài)欄顯示和樣式

[填坑記錄](méi)

在使用IOS9新框架[ReplayKit]進(jìn)行app錄屏的時(shí)候,
為了不把錄屏相關(guān)控制操作的UI錄進(jìn)去,
需要用不同的把錄的頁(yè)面和操作的界面UI放在不同的window上,
于是出現(xiàn)了"在錄屏頁(yè)面隱藏狀態(tài)欄之后,添加新的window,狀態(tài)欄又顯示了"的問(wèn)題.
IOS8以前控制狀態(tài)欄的方法都不管用了.

IOS6-8方法: 設(shè)置 info.plist 添加 View controller- based status bar appearance
1.當(dāng)View controller- based status bar appearance為YES,狀態(tài)欄由當(dāng)前控制器控制;

//在當(dāng)前頁(yè)面添加控制
- (BOOL)prefersStatusBarHidden 
{ 
  return YES; 
}

2.當(dāng)View controller- based status bar appearance為NO,狀態(tài)欄由應(yīng)用UIApplication來(lái)管理。

[[UIApplication sharedApplication] setStatusBarHidden:<#(BOOL)#>];
[[UIApplication sharedApplication] setStatusBarStyle:<#(UIStatusBarStyle)#>];

IOS9以后新添加的window需要設(shè)置rootController:

//添加window
UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[window setRootViewController:self];//設(shè)置當(dāng)前頁(yè)為新window根控制器
[window makeKeyAndVisible];

//控制狀態(tài)欄
- (BOOL)prefersStatusBarHidden {
    return YES;
}
//設(shè)置樣式
- (UIStatusBarStyle)preferredStatusBarStyle {   
    return UIStatusBarStyleLightContent;
}

PS: IOS9中如果創(chuàng)建多個(gè)window,則改變狀態(tài)欄的樣式,只能在最頂層的window中的控制器中設(shè)置狀態(tài)欄樣式才有效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容