[英]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.