1.iOS12及以下獲取狀態(tài)欄的方法(此方法在iOS13會(huì)崩潰)
?UIView? *statusBarView = [[UIApplication sharedApplication] valueForKeyPath:@"statusBar"];
2.iOS13上獲取狀態(tài)欄的方法
UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
if([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
? ? ? ? ? UIView*localStatusBarView= [statusBarManager? ? ? ? ? ? performSelector:@selector(createLocalStatusBar)];
? ? ? ? ? ? statusBarView = [localStatusBarView performSelector:@selector(statusBar)];
? ? ? ? ? ? //根據(jù)當(dāng)前狀態(tài)欄的類型,重置狀態(tài)欄顏色(否則截屏出來的都是默認(rèn)顏色)
? ? ? ? ? ? UIColor*statusBarColor = [UIColorblackColor];//默認(rèn)為黑色
? ? ? ? ? ? UIStatusBarStyle statusBarStyle = self.preferredStatusBarStyle;//獲取當(dāng)前視圖控制器的狀態(tài)欄類型
? ? ? ? ? ? if(statusBarStyle ==UIStatusBarStyleLightContent) {
? ? ? ? ? ? ? ? statusBarColor = [UIColorwhiteColor];
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? /*UIStatusBarStyleDarkContent? ?其他類型根據(jù)需求設(shè)置不同顏色
? ? ? ? ? ? ? ? ? UIStatusBarStyleBlackTranslucent
? ? ? ? ? ? ? ? ? UIStatusBarStyleBlackOpaque
?? ? ? ? ? ? ? ? */
? ? ? ? ? ? }
? ? ? ? ? ? /*
?? ? ? ? ? ? 可以獲取到UIStatusBar
?? ? ? ? ? ? UIView *statusBar = [[localStatusBarView valueForKey:@"_statusBar"] valueForKey:@"_statusBar"];
?? ? ? ? ? ? 但不能改變導(dǎo)航欄顏色
?? ? ? ? ? ? [statusBar performSelector:@selector(setForegroundColor:) withObject:statusBarColor];
?? ? ? ? ? ? */
? ? ? ? ? ? [statusBarView performSelector:@selector(setForegroundColor:)withObject:statusBarColor];
?}