欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解在iOS App中自定義和隱藏狀態(tài)欄的方法

 更新時(shí)間:2016年03月16日 09:17:58   作者:ForeverYoung21  
這篇文章主要介紹了在iOS App中自定義和隱藏狀態(tài)欄的方法,在頂部時(shí)某些狀況下即用應(yīng)用內(nèi)的狀態(tài)欄覆蓋系統(tǒng)本身的,代碼示例為Objective-C語(yǔ)言,需要的朋友可以參考下

自定義狀態(tài)欄

有時(shí)候,需要在狀態(tài)欄上顯示一些自定義信息,比如新浪微博的官方iOS客戶(hù)端:告知用戶(hù)信息處于發(fā)送隊(duì)列、發(fā)送成功或者發(fā)送失敗。

201631691517349.gif (320×480)

如上圖,通過(guò)在狀態(tài)欄顯示自定義信息,可以給用戶(hù)友好又不影響軟件使用的提示。

為此,我們顯得定義一個(gè)自定義狀態(tài)欄類(lèi),包含一個(gè)顯示信息的Label:

復(fù)制代碼 代碼如下:

@interface CustomStatusBar : UIWindow 

    UILabel *_messageLabel; 

 
- (void)showStatusMessage:(NSString *)message; 
- (void)hide; 
 
@end 

接著,設(shè)置大小和系統(tǒng)狀態(tài)欄一致,背景為黑色:
復(fù)制代碼 代碼如下:

self.frame = [UIApplication sharedApplication].statusBarFrame; 
self.backgroundColor = [UIColor blackColor]; 

到這里,為了讓自定義的狀態(tài)欄可以讓用戶(hù)看到,還需要設(shè)置它的windowLevel。
在iOS中,windowLevel屬性決定了UIWindow的顯示層次。默認(rèn)的windowLevel為UIWindowLevelNormal,即0.0。

系統(tǒng)定義了三個(gè)層次如下,

復(fù)制代碼 代碼如下:

const UIWindowLevel UIWindowLevelNormal; 
const UIWindowLevel UIWindowLevelAlert; 
const UIWindowLevel UIWindowLevelStatusBar; 
typedef CGFloat UIWindowLevel; 

為了能夠覆蓋系統(tǒng)默認(rèn)的狀態(tài)欄,我們把自定義的狀態(tài)欄的windowLevel調(diào)高點(diǎn):
復(fù)制代碼 代碼如下:

self.windowLevel = UIWindowLevelStatusBar + 1.0f;


隱藏狀態(tài)欄

如果想要隱藏狀態(tài)欄,有兩種做法:

狀態(tài)欄是否隱藏默認(rèn)由控制器管理,也就是說(shuō),當(dāng)前狀態(tài)欄所對(duì)應(yīng)的控制器決定是否隱藏狀態(tài)欄。

UIViewController中提供了一個(gè)prefersStatusBarHidden方法用于查看當(dāng)前的控制器顯示的狀態(tài)欄是否隱藏,默認(rèn)這個(gè)方法返回的是NO,也就是不隱藏。但是并沒(méi)有提供相應(yīng)的方法來(lái)設(shè)置隱藏狀態(tài)欄。

這種情況我們可以重寫(xiě)prefersStatusBarHidden方法,通過(guò)修改它的返回值達(dá)到目的。

復(fù)制代碼 代碼如下:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

這樣狀態(tài)欄就可以隱藏了。


另一種做法是不讓控制器來(lái)決定是否隱藏狀態(tài)欄,而是讓[UIApplication sharedApplication]來(lái)決定。

復(fù)制代碼 代碼如下:

[UIApplication sharedApplication].statusBarHidden = YES;

運(yùn)行程序發(fā)現(xiàn)狀態(tài)欄并沒(méi)有隱藏。查看文檔可以發(fā)現(xiàn):
復(fù)制代碼 代碼如下:

Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.

意思是如果使用默認(rèn)的控制器管理狀態(tài)欄(第一種做法提到的),那么設(shè)置statusBarHidden是沒(méi)有效果的。想要關(guān)閉控制器的管理,需要我們給Info.plist增加一個(gè)key:
復(fù)制代碼 代碼如下:

View controller-based status bar appearance

并且設(shè)置為NO,這樣就可以通過(guò)設(shè)置statusBarHidden來(lái)隱藏狀態(tài)欄了。(這個(gè)key是Info.plist添加Key出現(xiàn)的下拉欄里的最后一個(gè))


當(dāng)控制器管理狀態(tài)欄時(shí)
復(fù)制代碼 代碼如下:

- (UIViewController *)childViewControllerForStatusBarHidden
- (UIViewController *)childViewControllerForStatusBarStyle

這兩個(gè)方法可以將狀態(tài)欄的控制權(quán)交給子控制器管理,如果返回nil則表示控制器自己來(lái)管理狀態(tài)欄;如果返回子控制器,則表示子控制器來(lái)管理狀態(tài)欄。比如在navigation controller中實(shí)現(xiàn)prefersStatusBarHidden方法可能并不管用,因?yàn)樗赡苣J(rèn)在childViewControllerForStatusBarHidden中返回的是導(dǎo)航棧頂控制器,此時(shí)狀態(tài)欄由棧頂控制器來(lái)決定。如果想讓navigation controller來(lái)決定,那么可以在類(lèi)中按下面的方式實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

- (UIViewController *)childViewControllerForStatusBarHidden
{
    return nil;
}

此時(shí),狀態(tài)欄的管理權(quán)在導(dǎo)航控制器。

相關(guān)文章

  • iOS開(kāi)發(fā)之路--微博新特性頁(yè)面

    iOS開(kāi)發(fā)之路--微博新特性頁(yè)面

    本文是IOS開(kāi)發(fā)之路系列的第三篇,主要是分享了微博新特性頁(yè)面的制作源碼,希望對(duì)大家有所幫助
    2014-08-08
  • 淺談iOS開(kāi)發(fā)中static變量的三大作用

    淺談iOS開(kāi)發(fā)中static變量的三大作用

    下面小編就為大家?guī)?lái)一篇淺談iOS開(kāi)發(fā)中static變量的三大作用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • iOS在固定的label上動(dòng)態(tài)顯示所有文字

    iOS在固定的label上動(dòng)態(tài)顯示所有文字

    這篇文章給大家主要介紹了iOS中如何實(shí)現(xiàn),在固定的label上動(dòng)態(tài)顯示所有文字的方法,文中給出了示例和思路,對(duì)大家的理解很有幫助,感興趣的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • iOS利用攝像頭獲取環(huán)境光感參數(shù)的方法

    iOS利用攝像頭獲取環(huán)境光感參數(shù)的方法

    本篇文章主要介紹了iOS利用攝像頭獲取環(huán)境光感參數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • iOS中讀寫(xiě)鎖的簡(jiǎn)單實(shí)現(xiàn)方法實(shí)例

    iOS中讀寫(xiě)鎖的簡(jiǎn)單實(shí)現(xiàn)方法實(shí)例

    讀寫(xiě)鎖是計(jì)算機(jī)程序的并發(fā)控制的一種同步機(jī)制,也稱(chēng)“共享-互斥鎖”、多讀者-單寫(xiě)者鎖,讀操作可并發(fā)重入,寫(xiě)操作是互斥的,這篇文章主要給大家介紹了關(guān)于iOS中讀寫(xiě)鎖的簡(jiǎn)單實(shí)現(xiàn)方法,需要的朋友可以參考下
    2021-11-11
  • 高仿IOS的Android彈出框

    高仿IOS的Android彈出框

    這篇文章主要為大家詳細(xì)介紹了高仿IOS的Android彈出框的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 使用iOS推送時(shí)警告錯(cuò)誤的解決方法

    使用iOS推送時(shí)警告錯(cuò)誤的解決方法

    這篇文章主要為大家詳細(xì)介紹了使用iOS推送時(shí)警告錯(cuò)誤的解決方法,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS 11 BUG的發(fā)現(xiàn)、定位和解決

    iOS 11 BUG的發(fā)現(xiàn)、定位和解決

    這篇文章主要為大家詳細(xì)介紹了iOS 11 BUG的發(fā)現(xiàn)、定位和解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • iOS去除Webview鍵盤(pán)頂部工具欄的方法

    iOS去除Webview鍵盤(pán)頂部工具欄的方法

    這篇文章主要給大家介紹了關(guān)于iOS去除Webview鍵盤(pán)頂部工具欄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • iOS10 Xcode8適配7個(gè)常見(jiàn)問(wèn)題匯總

    iOS10 Xcode8適配7個(gè)常見(jiàn)問(wèn)題匯總

    這篇文章主要為大家詳細(xì)匯總了iOS10 Xcode8適配7個(gè)常見(jiàn)問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評(píng)論