[英]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;
}
這一切都意味着在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.