簡體   English   中英

iOS故事板 - 在故事板上禁用狀態欄一次

[英]iOS storyboard - Disable status bar on storyboard once

在使用Interface BuilderStoryboard完全禁用狀態欄時, Xcode是否有一種方法,這樣當我創建一個新的View Controller我不必將“狀態欄”從推斷變為無。

這是一個完整的iOS 7兼容解決方案(不兼容iOS 6,因為太多東西已經改變)

來自Apple doc':信息屬性列表主要參考':

UIViewControllerBasedStatusBarAppearance (Boolean - iOS)指定狀態欄外觀是否基於狀態欄下當前視圖控制器首選的樣式。 當此鍵不存在或其值設置為YES時,視圖控制器確定狀態欄樣式。 當鍵設置為NO時,視圖控制器(或應用程序)必須使用UIApplication對象顯式設置狀態欄樣式。 iOS 7.0及更高版本支持此密鑰。

因此,默認情況下,此鍵不存在(=與添加鍵相同的行為,但將其設置為YES):在這種情況下,每個視圖控制器通過覆蓋某些方法來確定狀態欄行為 - 請參閱下文。

1)全局顯示/隱藏所有應用程序的viewControllers的狀態欄

首先是對您的問題的完整答案,為您的所有應用程序viewControllers制作單個全局顯示/隱藏設置

步驟1:在您的frameWork-Info.plst'文件中,添加“查看基於控制器的狀態欄外觀”鍵並將其設置為“否”。 將此鍵設置為“NO”將使iOS 7不會調用方法'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation',請參見下文。

第2步:在項目設置 - >常規 - >部署信息中,在應用程序啟動期間選擇“顯示/隱藏”

就是這樣:現在你可以全局顯示或隱藏符合iOS 7的狀態欄

2)讓所有viewControllers都可以單獨控制狀態欄(= iOS 7默認值)

步驟1:不添加密鑰,或添加密鑰,但將其設置為YES,以獲取iOS 7的默認行為

第2步:在每個viewController中,您現在可以通過覆蓋來確定是否顯示/隱藏狀態欄:

  • (BOOL)prefersStatusBarHidden
  • (UIStatusBarAnimation)preferredStatusBarUpdateAnimation

因此,您需要覆蓋這兩個方法來控制狀態欄行為,並為您的應用程序返回適當的值(請參閱doc ref了解所有可能的值,這已明確說明)。

控制應用程序啟動期間的行為(顯示第一個控制器),在項目設置下設置顯示/隱藏 - >常規 - >部署信息

請注意,iOS 7僅支持單一外觀樣式(UIStatusBarStyleLightContent),所有其他樣式均已棄用!

因此,您可以使用按鈕輕松打開/關閉控制桿 - 盡可能靈活!

例如,在viewController中添加一個按鈕,然后使用以下代碼通過動畫來打開/關閉條形圖@ bopert @property'isStatusBarHidden'。

- (BOOL)prefersStatusBarHidden
{
    return self.isStatusBarHidden;
}

- (IBAction)buttonToggleStatusBar:(UIButton *)sender
{
    [UIView animateWithDuration:1.0 animations:^{
        self.isStatusBarHidden = !self.isStatusBarHidden;
        [self setNeedsStatusBarAppearanceUpdate];
    }];

}

您可以對首選動畫執行相同操作

高級注釋:如果要為@property'isStatusBarHidden'設置默認值,則需要在'initWithCoder'(使用Storyboard時調用)而不是viewDidLoad中設置。 原因是在'viewDidLoad'之前調用'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation'

您是否已經檢查過在Info.plist中將UIStatusBarHiddenYES是否有效? 請參閱文檔: http//developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15

這將隱藏應用程序啟動時的狀態欄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM