你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 詳解在iOS App中自界說和隱蔽狀況欄的辦法

詳解在iOS App中自界說和隱蔽狀況欄的辦法

編輯:IOS開發綜合

自界說狀況欄

有時刻,須要在狀況欄上顯示一些自界說信息,好比新浪微博的官方IOS客戶端:告訴用戶信息處於發送隊列、發送勝利或許發送掉敗。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615485979.gif (320×480)

如上圖,經由過程在狀況欄顯示自界說信息,可以給用戶友愛又不影響軟件應用的提醒。

為此,我們顯得界說一個自界說狀況欄類,包括一個顯示信息的Label:

@interface CustomStatusBar : UIWindow 

    UILabel *_messageLabel; 

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

接著,設置年夜小和體系狀況欄分歧,配景為黑色:

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

到這裡,為了讓自界說的狀況欄可讓用戶看到,還須要設置它的WindowLevel。
在IOS中,WindowLevel屬性決議了UIWindow的顯示條理。默許的windowLevel為UIWindowLevelNormal,即0.0。

體系界說了三個條理以下,

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

為了可以或許籠罩體系默許的狀況欄,我們把自界說的狀況欄的windowLevel調高點:

self.windowLevel = UIWindowLevelStatusBar + 1.0f;


隱蔽狀況欄

假如想要隱蔽狀況欄,有兩種做法:

狀況欄能否隱蔽默許由掌握器治理,也就是說,以後狀況欄所對應的掌握器決議能否隱蔽狀況欄。

UIViewController中供給了一個prefeXmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RsstatusBarHidden辦法用於檢查以後的掌握器顯示的狀況欄能否隱蔽,默許這個辦法前往的是NO,也就是不隱蔽。然則並沒有供給響應的辦法來設置隱蔽狀況欄。

這類情形我們可以重寫prefeXmlRss/ target=_blank class=infotextkey>XmlRss/ target=_blank class=infotextkey>RsstatusBarHidden辦法,經由過程修正它的前往值到達目標。

- (BOOL)prefeXmlRss/ target=_blank class=infotextkey>RsstatusBarHidden
{
    return YES;
}

如許狀況欄便可以隱蔽了。


另外一種做法是不讓掌握器來決議能否隱蔽狀況欄,而是讓[UIApplication sharedApplication]來決議。

[UIApplication sharedApplication].statusBarHidden = YES;

運轉法式發明狀況欄並沒有隱蔽。檢查文檔可以發明:

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

意思是假如應用默許的掌握器治理狀況欄(第一種做法提到的),那末設置statusBarHidden是沒有用果的。想要封閉掌握器的治理,須要我們給Info.plist增長一個key:

View controller-based status bar appearance

而且設置為NO,如許便可以經由過程設置statusBarHidden來隱蔽狀況欄了。(這個key是Info.plist添加Key湧現的下拉欄裡的最初一個)


當掌握器治理狀況欄時

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

這兩個辦法可以將狀況欄的掌握權交給子掌握器治理,假如前往nil則表現掌握器本身來治理狀況欄;假如前往子掌握器,則表現子掌握器來治理狀況欄。好比在navigation controller中完成prefersStatusBarHidden辦法能夠其實不管用,由於它能夠默許在childViewControllerForStatusBarHidden中前往的是導航棧頂掌握器,此時狀況欄由棧頂掌握器來決議。假如想讓navigation controller來決議,那末可以在類中按上面的方法完成:

- (UIViewController *)childViewControllerForStatusBarHidden
{
    return nil;
}

此時,狀況欄的治理權在導航掌握器。

【詳解在iOS App中自界說和隱蔽狀況欄的辦法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved