UINavgationController中覆写preferredStatusBarStyle方法不执行的问题
如果viewController不是在 UINavgationController中,那么以上代碼可以把狀態(tài)欄文本顏色設(shè)置為白色,但是如果 viewController是添加到導(dǎo)航上的,你會(huì)發(fā)現(xiàn)上面代碼達(dá)不到你想要的效果,狀態(tài)欄文本顏色是黑色的!?
這是為什么??
經(jīng)過(guò)查找資料,才知道原來(lái)是這么一回事:?
*UINavigationController不會(huì)將 preferredStatusBarStyle方法調(diào)用轉(zhuǎn)給它的子視圖,而是由它自己管理狀態(tài),而且它也應(yīng)該那樣做.因?yàn)閁INavigationController 包含了它自己的狀態(tài)欄?
因此就算 UINavigationController中的viewController 實(shí)現(xiàn)了 preferredStatusBarStyle方法 也不會(huì)調(diào)用?
那 UINavigationController是怎么決定 該返回 UIStatusBarStyleLightContent 還是 UIStatusBarStyleDefault的呢? 它是基于它的 UINavigationBar.barStyle屬性.默認(rèn)(UIBarStyleDefault)的是黑色文本的狀態(tài)欄 而 UIBarStyleBlack是設(shè)置為白色文本的狀態(tài)欄*?
也就是說(shuō),如果viewController是在導(dǎo)航中的,想要改變狀態(tài)欄文本顏色,那么需要通過(guò)代碼:
?
//將status bar 文本顏色設(shè)置為白色 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; //將status bar 文本顏色設(shè)置為黑色 ,默認(rèn)就是黑色 self.navigationController.navigationBar.barStyle = UIBarStyleDefault;?
另外,如果viewController在導(dǎo)航中,還想通過(guò) preferredStatusBarStyle 方法設(shè)置狀態(tài)欄文本顏色,那就只能隱藏導(dǎo)航欄了:
//隱藏導(dǎo)航欄后 系統(tǒng)會(huì)調(diào)用 preferredStatusBarStyle 方法 self.navigationController.navigationBarHidden = YES;?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yipingios/p/5530921.html
總結(jié)
以上是生活随笔為你收集整理的UINavgationController中覆写preferredStatusBarStyle方法不执行的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原创:美国的崛起,让犹太人成为了最后的赢
- 下一篇: 最大化平均值