蘋果在今年的開發(fā)者大會(huì)中規(guī)定,iOS13將不再支持通過KVC的方式拿到私有屬性个绍。在最近的項(xiàng)目中有個(gè)改變狀態(tài)欄背景顏色的小功能是利用KVC的方式拿到的勒葱。直接報(bào)錯(cuò)崩潰,所以在此記錄一下障贸。
- 首先看一下iOS13之前我們是如何獲取到狀態(tài)欄并改變其背景顏色的
//簡(jiǎn)單粗暴KVC獲取到狀態(tài)欄View
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]){
//設(shè)置狀態(tài)欄背景色
statusBar.backgroundColor = [UIColor redColor];
}
- iOS13之后獲取狀態(tài)欄的方法
if (@available(iOS 13.0, *)) {
UIView *statusBar = [[UIView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame];
statusBar.backgroundColor = [UIColor redColor];;
[[UIApplication sharedApplication].keyWindow addSubview:statusBar];
}