Xcode ?Version 11.4 (11E146)
Swift 5.0或OC項(xiàng)目
iOS13.0
升級(jí)最新的Xcode版本后锻狗,運(yùn)行項(xiàng)目報(bào)錯(cuò),發(fā)現(xiàn)報(bào)錯(cuò)原因是
//設(shè)置狀態(tài)欄顏色
- (void)setStatusBarBackgroundColor:(UIColor *)color{}?
這個(gè)方法病蛉。
解決方法:
//設(shè)置狀態(tài)欄顏色
- (void)setStatusBarBackgroundColor:(UIColor *)color {
? ? if(@available(iOS13.0, *)) {
? ? ? ? UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
? ? ? ? if([statusBarManagerrespondsToSelector:@selector(createLocalStatusBar)]) {
? ? ? ? ? ? UIView*localStatusBarView= [statusBarManager? ? ? ? ? ? performSelector:@selector(createLocalStatusBar)];
? ? ? ? ? ? UIView*statusBarView = [localStatusBarViewperformSelector:@selector(statusBar)];
?? ? ? ? ? //根據(jù)當(dāng)前狀態(tài)欄的類(lèi)型,重置狀態(tài)欄顏色(否則截屏出來(lái)的都是默認(rèn)顏色)
? ? ? ? ? ? UIColor*statusBarColor = color;
? ? ? ? ? ? UIStatusBarStyle statusBarStyle = self.preferredStatusBarStyle;//獲取當(dāng)前視圖控制器的狀態(tài)欄類(lèi)型
? ? ? ? ? ? if(statusBarStyle ==UIStatusBarStyleLightContent) {
? ? ? ? ? ? ? ? [statusBarViewperformSelector:@selector(setForegroundColor:)withObject:statusBarColor];
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
? ? ? ? ? ? if([statusBarrespondsToSelector:@selector(setBackgroundColor:)]) {
? ? ? ? ? ? ? ? statusBar.backgroundColor= color;
? ? ? ? ? ? }
? ? ? ? }
? ? }else{
?? ?UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
? ? if([statusBarrespondsToSelector:@selector(setBackgroundColor:)]) {
? ? ? ? statusBar.backgroundColor= color;
?? ?}
? ? }
}