我有一個子視圖控制器,無論父視圖處於哪種模式,都需要始終以橫向模式顯示。我將它添加到父視圖堆棧中旋轉視圖在一側留下20個像素空隙
[[self navigationController] pushViewController:controller animated:NO];
我試圖強制視圖旋轉並顯示,就好像設備在橫向方向保持,即使它仍然保持在縱向方向。
唯一的問題是,無論我設置視圖框的大小和座標是多少,我都會在屏幕右側出現一個20像素的間隙,StatusBar曾經是人像模式期間的間隙。
我可以調整什麼以確保這個差距消失?
以下是我正在做的轉換(推薦by this SO article)
- (void)changeOrientationToLandscape
{
UIApplication *myApp = [UIApplication sharedApplication];
CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));
landscapeTransform = CGAffineTransformTranslate(landscapeTransform, +90.0, +90.0);
[self.view setTransform:landscapeTransform];
// Change the status bar orientation so it's shown as if we're in landscape
myApp.statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
// Manually force view frame - this doesn't seem to fix the 20 pixel gap
self.view.frame = CGRectMake(0, 0, 480, 320);
}
我看到的視圖佔據整個屏幕,並沒有20像素差距的唯一情況是,如果我隱藏狀態欄的所有一起,我不能爲這個應用程序做。
下面是屏幕的外觀(使用底部的home按鈕以縱向方式保持)。注意狀態欄的末端沒有相同的紫色背景 - 我希望我可以將視圖轉移到白色的空白處。
我還打印出視圖和navigationController的視圖框架,它們都報告 x和y位置爲0,0。導航視圖框架的報告尺寸爲320x480,而視圖的框架爲480x320。
如何禁用狀態欄?我只看到將其設置爲隱藏或可見的選項。我確實需要在子控制器中可見的狀態欄。 – 2011-02-16 17:10:43
如果您在推動孩子之前將其隱藏在父母身上?我想你可以在那之後再次展示給孩子們(並且在解僱孩子時撤消一切)。 – 2011-02-16 19:01:11