簡體   English   中英

設置setStatusBarHidden:在iOS v5應用程序中。還有一個空白區域。這是解決問題的正確方法嗎?

[英]when setting setStatusBarHidden: in iOS v5 app. A blank space remains. Is this the right way to fix it?

我想在我的iOS v5通用應用程序中切換statusBar。

但發現其他人有UIViews(在我的情況下,subViews添加到主視圖)只回收隱藏statusBar剩下的20px,如果你然后旋轉設備(我使用模擬器)

我的觀點是以編程方式完成的。

我嘗試了通過谷歌搜索找到的一些建議,但似乎沒有任何工作。 即更改autoresizing / mask,wantsFullScreenLayout,setNeedsLayout,在IB'使用全屏。

我終於意識到我將視圖框架高度設置為0 ,它的高度[[UIScreen mainScreen] applicationFrame] size.height的高度。

我想出的是:將視圖框架高度設置為-20,並將其高度限制[[UIScreen mainScreen] applicationFrame] size.height + 20

在viewDidLoad中。

CGRect theDeviceRect= [[UIScreen mainScreen] applicationFrame];
newMap.frame = CGRectMake(0, -20, theDeviceRect.size.width, theDeviceRect.size.height+20);

我也在willAnimateRotationToInterfaceOrientation: delegate中有這個。

現在當我切換狀態欄時:

- (void) toggleStatusBarAction:(id)sender{
  BOOL istathidden=  [[UIApplication sharedApplication] isStatusBarHidden];

   [[UIApplication sharedApplication] setStatusBarHidden:!istathidden withAnimation:UIStatusBarAnimationFade];
    }

一切都按預期工作。 但是我想看看我的解決方案是好壞的方式,如果我遺失了什么?:

提前謝謝了。 MH

我所做的是:

在這段代碼之后:

[[UIApplication sharedApplication] setStatusBarHidden:NO];

我馬上執行:

CGRect originalFrame = self.view.frame;
originalFrame.origin.y = 20.0;
self.view.frame = originalFrame;

這會使框架“刷新”到正確的位置。 不是最好的解決方案,但它確實有效。

在您的示例中,您可能需要根據istathidden動態地將y設置為0或20。

編輯於2012年9月2日:解雇模態視圖控制器時的更好解決方案:

[[UIApplication sharedApplication] setStatusBarHidden:NO];
self.view.frame = [[UIScreen mainScreen] applicationFrame];

暫無
暫無

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

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