實現位於UIView頂部的狀態欄和導航欄的正確方法是什麼?頂部帶有狀態欄和導航欄覆蓋的全屏UIView
alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png
實現位於UIView頂部的狀態欄和導航欄的正確方法是什麼?頂部帶有狀態欄和導航欄覆蓋的全屏UIView
alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png
在上面的截圖中,有一個半透明的狀態欄和一個半透明的導航欄。
狀態欄使用
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];
導航欄設置爲使用
theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
設置狀態欄樣式爲黑色半透明和導航欄樣式爲黑色半透明的設置。如果您使用的是基於導航的應用程序,請在MainWindow.xib中檢查狀態欄是否隱藏,導航欄是否隱藏複選框。
當用戶觸摸屏幕時,啓動計時器以查看這是單擊還是雙擊。如果單擊,使狀態欄和導航欄隱藏=否。一旦用戶活動停止,再次啓動計時器。在一段時間沒有活動之後,再次隱藏它們。
我想出的最佳方式是:當使用包含導航控制器的Tab欄的「複雜」層次結構時,一個「細節」視圖是全屏視圖。
在之前的標籤欄控制器的視圖添加到窗口應用程序的委託,我加了這一點:
tabBarController.view.frame = [[UIScreen mainScreen] bounds];
這將使標籤欄控制器覆蓋整個屏幕,甚至低於的區域狀態欄。我必須將幾個視圖的高度抵消到+ 20px,特別是導航欄。
只需在視圖控制器中設置「想要全屏佈局」。這爲我解決了這個問題。
self.wantsFullScreenLayout = YES;
如果你有一個導航控制器內的視圖控制器,你要隱藏,纔能有你的viewController在全屏視圖的狀態欄,可以隨時撥打:
[self.navigationController.view setNeedsLayout];
後隱藏狀態欄。 但我個人認爲
[self setWantsFullScreenLayout:YES];
是一個更好的方法。
步驟1將UIViewControllerBasedStatusBarAppearance爲否在plist中
然後添加以下代碼中那樣完成啓動選項
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
請點擊此代碼,它爲我工作
如何隱藏頂部和底部的酒吧,如果它是視圖控制器中的uiwebview? – thndrkiss 2010-08-19 19:31:52
這在iPhone Simulator 3.2上不適用於我。從Xcode文檔:「已棄用,使用'UIBarStyleBlack`並將半透明屬性設置爲'YES`。」這工作! :) – ma11hew28 2010-09-27 00:06:08
當這寫的(2008年12月),這是正確的方式。當然,隨着時間的推移,API確實會改變。你的方法現在是正確的。 – August 2010-10-15 20:18:12