iOS狀態(tài)欄的顯示與隱藏的示例代碼
今天設(shè)計(jì)師跑來(lái)問(wèn)iOS狀態(tài)欄的問(wèn)題,由于之前沒(méi)有整理,只能“我確認(rèn)下給你回復(fù)”,確認(rèn)得有點(diǎn)久,略尷尬。。。好記性不如爛筆頭,希望能養(yǎng)成整理做筆記的好習(xí)慣。那么,閑話少說(shuō), 讓我們進(jìn)入正題。
我們使用xcode新建一個(gè) iOS工程 ,默認(rèn)情況下?tīng)顟B(tài)欄是顯示的。
隱藏某個(gè)控制器的狀態(tài)欄
最簡(jiǎn)單地隱藏方法就是使用下面這段代碼:
- (BOOL)prefersStatusBarHidden { returnYES; }
全局隱藏狀態(tài)欄
上面代碼確實(shí)隱藏了對(duì)應(yīng)控制器的狀態(tài)欄,但是多數(shù)情況下我們的項(xiàng)目里面有很多控制器,如此一個(gè)個(gè)設(shè)置就略顯蛋疼,我們可以進(jìn)行全局設(shè)置。注釋掉上面代碼,在 Appdelegate
的 didFinishLaunchingWithOptions
里面添加如下代碼,并運(yùn)行。
[[UIApplicationsharedApplication] setStatusBarHidden:YES];
結(jié)果有點(diǎn)尷尬,狀態(tài)欄還在。。打開(kāi) info.plist 找到參數(shù)
View controller-based status bar appearance
。
顧名思義,該參數(shù)決定我們項(xiàng)目狀態(tài)欄的顯隱藏是否以各控制器的設(shè)置為準(zhǔn)(各自為政或統(tǒng)一管理)。將其設(shè)置為NO,再次運(yùn)行。嗯,這次是我們想要的結(jié)果了。這時(shí)候如果注釋掉 [[UIApplicationsharedApplication] setStatusBarHidden:YES];
回到最初的 prefersStatusBarHidden
方案,你會(huì)發(fā)現(xiàn)狀態(tài)欄隱藏?zé)o效了,因?yàn)檫@個(gè)時(shí)候我們項(xiàng)目的狀態(tài)欄服從統(tǒng)一管理,具體控制器的配置對(duì)其無(wú)效。
隱藏啟動(dòng)頁(yè)狀態(tài)欄
眼尖的同學(xué)可能會(huì)發(fā)現(xiàn)在我們?cè)O(shè)置了 [[UIApplication sharedApplication] setStatusBarHidden:YES]
和 View controller-based status bar appearance
-> NO 之后app展示啟動(dòng)頁(yè)的過(guò)程中狀態(tài)欄仍然顯示著。額。。。其實(shí)也對(duì),因?yàn)槲覀冊(cè)?didFinishLaunchingWithOptions
才去設(shè)置隱藏的嘛。那么如何隱藏啟動(dòng)過(guò)程的狀態(tài)欄呢?再次打開(kāi) info.plist ,這次我們找到 Status bar is initially hidden
再次顧名思義。。。你懂的,將其設(shè)置為YES,然后運(yùn)行,Bingo! 狀態(tài)欄見(jiàn)鬼去吧。�在沒(méi)有進(jìn)行對(duì)應(yīng)設(shè)置的前提下,啟動(dòng)頁(yè)展示過(guò)程中狀態(tài)欄的顯隱和啟動(dòng)后狀態(tài)欄的顯隱是相對(duì)獨(dú)立的。關(guān)于啟動(dòng)后狀態(tài)欄的顯隱的設(shè)置參照上面:point_up_2:兩點(diǎn)哈。默認(rèn)情況下,若沒(méi)有進(jìn)行任何代碼設(shè)置,在 View controller-based status bar appearance
-> YES時(shí),啟動(dòng)后的狀態(tài)欄默認(rèn)顯示,否則將跟隨 Status bar is initially hidden
狀態(tài)。
全局隱藏情境下的個(gè)別展示
那么,問(wèn)題來(lái)了,如果我們通過(guò)全局設(shè)置隱藏了狀態(tài)欄,而項(xiàng)目中又有個(gè)別一兩個(gè)控制偏偏器要秀一下?tīng)顟B(tài)欄這怎么搞?
這種情況下就需要“宏觀調(diào)控”了,“全局”的坑還得“全局”來(lái)填,我們可以在對(duì)應(yīng)要隱藏的控制器里面的 viewWillAppear
方法內(nèi)設(shè)置 [[UIApplicationsharedApplication] setStatusBarHidden:YES]
,當(dāng)然為了不影響我們其他的控制器狀態(tài)欄展示,應(yīng)該在 viewWillDisappear
內(nèi)將其置為進(jìn)入前的狀態(tài) [[UIApplicationsharedApplication] setStatusBarHidden:<#before status#>]
;
總結(jié):
View controller-based status bar appearance
控制App狀態(tài)欄顯隱接受全局配置(NO)或者各控制器各自配置(YES)。 [[UIApplicationsharedApplication]setStatusBarHidden:hidden]
,必須在 View controller-based status bar appearance == NO
條件下才能生效。相應(yīng)的 prefersStatusBarHidden
為局部配置項(xiàng),控制對(duì)應(yīng)控制器狀態(tài)欄顯隱,必須在 View controller-based status bar appearance == YES
才生效。 設(shè)置 Status bar is initially hidden -> YES
可以隱藏啟動(dòng)頁(yè)展示過(guò)程的狀態(tài)欄。
今天就到這吧,趕緊跟設(shè)計(jì)師交差。有什么錯(cuò)誤和缺漏歡迎指正,補(bǔ)充。( _ )/
PS: 感謝哇丶啦咔咔的糾正哈,文中相應(yīng)的錯(cuò)誤與不當(dāng)描述已經(jīng)更正,啟動(dòng)頁(yè)展示過(guò)程中狀態(tài)欄的顯隱是相對(duì)獨(dú)立的,主要取決于 Status bar is initially hidden
的設(shè)置。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法
在iOS開(kāi)發(fā)中,有時(shí)會(huì)有跳轉(zhuǎn)系統(tǒng)設(shè)置界面的需求,例如提示用戶(hù)打開(kāi)藍(lán)牙或者WIFI,提醒用戶(hù)打開(kāi)推送或者位置權(quán)限等,接下來(lái)通過(guò)本文給大家介紹IOS應(yīng)用內(nèi)跳轉(zhuǎn)系統(tǒng)設(shè)置相關(guān)界面的方法,喜歡的朋友參考下2016-02-02Objective-C的緩存框架EGOCache在iOS App開(kāi)發(fā)中的使用
這篇文章主要介紹了Objective-C的緩存框架EGOCache在iOS App開(kāi)發(fā)中的使用,重點(diǎn)講解了EGOCache對(duì)緩存過(guò)期時(shí)間的檢測(cè)及處理,需要的朋友可以參考下2016-05-05Xcode中iOS應(yīng)用開(kāi)發(fā)的一般項(xiàng)目目錄結(jié)構(gòu)和流程簡(jiǎn)介
這篇文章主要介紹了Xcode中iOS應(yīng)用開(kāi)發(fā)的一般項(xiàng)目目錄結(jié)構(gòu)和流程簡(jiǎn)介,包括項(xiàng)目所需的一些平臺(tái)路徑如模擬器路徑等的介紹,需要的朋友可以參考下2016-02-02iOS的UI開(kāi)發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu)介紹
這篇文章主要介紹了iOS的UI開(kāi)發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12iOS仿小紅書(shū)呼吸燈動(dòng)畫(huà)(核心動(dòng)畫(huà)和定時(shí)器)兩種方式實(shí)現(xiàn)
本篇文章主要介紹了iOS仿小紅書(shū)呼吸燈動(dòng)畫(huà)(核心動(dòng)畫(huà)和定時(shí)器)兩種方式實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04iOS中UIScrollerView的用法及基于AotoLayout的控件懸停
這篇文章主要介紹了iOS中UIScrollerView的用法及基于AotoLayout的控件懸停,文中對(duì)于UIScrollerView的方法及屬性介紹地非常詳細(xì),十分推薦,示例代碼為Objective-C,需要的朋友可以參考下2016-03-03Flutter?模型動(dòng)態(tài)化賦值研究分析
這篇文章主要為大家介紹了Flutter?模型動(dòng)態(tài)化賦值研究分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03