最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

自定義狀態(tài)欄

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

201631691517349.gif (320×480)

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

為此,我們顯得定義一個自定義狀態(tài)欄類,包含一個顯示信息的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)欄可以讓用戶看到,還需要設(shè)置它的windowLevel。
在iOS中,windowLevel屬性決定了UIWindow的顯示層次。默認(rèn)的windowLevel為UIWindowLevelNormal,即0.0。

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

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

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

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

self.windowLevel = UIWindowLevelStatusBar + 1.0f;


隱藏狀態(tài)欄

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

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

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

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

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

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

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


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

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

[UIApplication sharedApplication].statusBarHidden = YES;

運行程序發(fā)現(xiàn)狀態(tà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是沒有效果的。想要關(guān)閉控制器的管理,需要我們給Info.plist增加一個key:
復(fù)制代碼 代碼如下:

View controller-based status bar appearance

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


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

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

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

- (UIViewController *)childViewControllerForStatusBarHidden
{
    return nil;
}

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

相關(guān)文章

  • 詳解iOS11關(guān)于導(dǎo)航欄問題

    詳解iOS11關(guān)于導(dǎo)航欄問題

    本篇文章主要介紹了詳解iOS11關(guān)于導(dǎo)航欄問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 詳解IOS判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)的三種方法

    詳解IOS判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)的三種方法

    這篇文章主要介紹了詳解IOS判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)的三種方法,網(wǎng)絡(luò)狀態(tài)是非常重要的知識,感興趣的同學(xué),必須要看一下
    2021-04-04
  • 舉例詳解iOS開發(fā)過程中的沙盒機制與文件

    舉例詳解iOS開發(fā)過程中的沙盒機制與文件

    這篇文章主要介紹了舉例詳解iOS開發(fā)過程中的沙盒機制與文件,示例代碼為傳統(tǒng)的Obejective-C,需要的朋友可以參考下
    2015-09-09
  • 如何在iphon IOS設(shè)備上使用二維碼

    如何在iphon IOS設(shè)備上使用二維碼

    深度解析iPhone ios設(shè)備上使用二維碼是本文要介紹的內(nèi)容,二維碼是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的。不多說,我們直接來腳本之家學(xué)習(xí)內(nèi)容詳解,感興趣的朋友一起來關(guān)注吧
    2015-08-08
  • 詳解iOS開發(fā)中Keychain的相關(guān)使用

    詳解iOS開發(fā)中Keychain的相關(guān)使用

    這篇文章主要介紹了iOS開發(fā)中Keychain的相關(guān)使用,文中列舉了一個使用Keychain來保存密碼的例子,需要的朋友可以參考下
    2015-10-10
  • iOS輸入框(UITextField)密碼明暗文切換方法

    iOS輸入框(UITextField)密碼明暗文切換方法

    這篇文章主要介紹了iOS輸入框(UITextField)密碼明暗文的切換方法,代碼簡短實用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • iOS二維碼的生成和掃描

    iOS二維碼的生成和掃描

    這篇文章主要為大家詳細(xì)介紹了iOS二維碼生成和掃描的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 快速解決ios微信下audio無法自動播放的問題

    快速解決ios微信下audio無法自動播放的問題

    下面小編就為大家分享一篇快速解決ios微信下audio無法自動播放的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • iOS 統(tǒng)計Xcode項目代碼行數(shù)的實例

    iOS 統(tǒng)計Xcode項目代碼行數(shù)的實例

    下面小編就為大家分享一篇iOS 統(tǒng)計Xcode項目代碼行數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS之加載Gif圖片的方法

    iOS之加載Gif圖片的方法

    本篇文章主要介紹了iOS之加載Gif圖片,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

彭州市| 澳门| 建宁县| 玛曲县| 瑞昌市| 冕宁县| 宾川县| 康乐县| 咸阳市| 新河县| 望谟县| 章丘市| 荃湾区| 青州市| 曲阳县| 盐边县| 泗洪县| 田阳县| 七台河市| 桦南县| 麦盖提县| 星座| 永新县| 平江县| 宁南县| 甘谷县| 尚志市| 石台县| 莱芜市| 通城县| 新干县| 凤阳县| 九台市| 宁城县| 西吉县| 化德县| 洱源县| 美姑县| 麻城市| 建德市| 酉阳|