A.?View controller-based status bar appearance培廓,字面意思很好理解磺送,默認為NO,通過UIApplication.shared.statusBarStyle = .lightContent來修改statusBarStyle谭跨;
B. View controller-based status bar appearance為YES時丽声,通過重寫preferredStatusBarStyle修改statusBarStyle,由于preferredStatusBarStyle是只讀的壤短,所以如果要根據(jù)業(yè)務(wù)邏輯動態(tài)修改statusBarSty le的話需要顯式的調(diào)用setNeedsStatusBarAppearanceUpdate()方法设拟,讓系統(tǒng)再去讀取一次更改后的preferredStatusBarStyle;
注意:如果當(dāng)前viewcontroller是navigationController的childViewController,通過重寫preferredStatusBarStyle是不能修改statusBarStyle的久脯,解決辦法是要么重寫UINavigationController的childForStatusBarStyle和childForStatusBarHidden(當(dāng)導(dǎo)航欄隱藏時只需重寫前者)纳胧,返回visibleViewController;要么使用方法a帘撰。