簡體   English   中英

狀態欄iOS7

[英]Status Bar iOS7

我有兩個視圖,我需要一個視圖才能顯示白色狀態欄,而另一個視圖則不顯示狀態欄。 我已成功使其顯示為“否”狀態欄,但無法使主視圖具有“白色”狀態欄。 我必須使用View controller-based status bar appearance = YES因為否則,當我從“無狀態欄視圖”返回時,它會使整個應用程序都沒有狀態欄。 為什么狀態欄不會白!!

清除狀態欄的當前代碼:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}


-(void)ViewDidLoad {

        if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
        {
            [self prefersStatusBarHidden];
            [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
        }
        else
        {
            // iOS 6
            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
        }
    }

試圖使狀態欄為白色的當前代碼:

- (void)viewDidLoad {

  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

    [self setNeedsStatusBarAppearanceUpdate];

}

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}
  1. 您不應在第一個塊中調用preferredsStatusBarHidden,而應實現它以返回true。
  2. 確保在Info.plist文件中將基於View控制器的狀態欄外觀(UIViewControllerBasedStatusBarAppearance)設置為yes。

這一切都意味着在VC中要隱藏狀態欄的地方,需要放置:

-(BOOL)prefersStatusBarHidden
{
    return true;
}

-(UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleDefault;
}

在另一個VC中,輸入:

-(BOOL)prefersStatusBarHidden
{
    return false;
}

-(UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

剛剛檢查了一下,一切似乎都按預期工作。 請注意,在iOS 7中,UIStatusBarStyle僅控制狀態欄中文本的顏色,背景顏色由導航欄本身確定。

為什么狀態欄不會白!!

好吧,僅僅因為它是透明的。 狀態欄的“背景色”現在(在ios7之后)是狀態欄后面的視圖/窗口的顏色。

但無法使主視圖具有白色狀態欄

我通常使用的解決方案,是迫使navigationController的的導航欄呈現狀態欄下方 ,而不是后面 這樣,navigationBar的顏色/背景圖像不會在狀態欄下擴展,並且狀態欄的“背景色”現在是窗口的顏色。

要強制導航欄在狀態欄下方開始,請將其clipsToBounds屬性設置為YES。

_navigationController.navigationBar.clipsToBounds   = YES;

要設置窗口的背景色,

self.window.backgroundColor = [UIColor whiteColor];


參考: 具有諷刺意味的是,我們的“解決方案”是別人的“錯誤” :)

暫無
暫無

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

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