2010-01-30 75 views
5

我已檢查了其他答案,但還沒有找到任何真正描述我的情況的東西。所以在這裏。舊顯示屏移位後模態視圖控制器問題

我有一個基於窗口的應用程序,它可以從xib創建並加載UIViewController。它的狀態欄被禁用,高度爲480,UISegmentedControl的y原點爲451.它很好地顯示在屏幕底部。*

在UIViewController的viewDidLoad中,我創建了一個UIView initWithFrame:CGRectMake(0.0, 0.0, 320.0, 431.0)];(即480 - 29像素UISegmentedControl和20的狀態欄。)我將它添加到UIViewController與[self.view addSubview:gameBoard];。然後,將一些UIView遊戲片段添加爲遊戲板UIView的子視圖,並且所有內容都按照我認爲應該顯示的內容進行顯示。

當點擊某些UIView子視圖時,應該會出現一個菜單。我創建了一個具有所需控件的UIViewController。我使用委託方法從子視圖,誰拿起觸發事件來電,來根的UIViewController - 這確實

self.squadOrders = [[SquadOrders alloc] initWithNibName:@"SquadOrders" bundle:nil]; 
    squadOrders.viewControllerDelegate = self; 
    [self presentModalViewController:squadOrders animated:YES]; 

和模態對話框顯示,因爲我認爲它應該從下緣向上滑動該屏幕沒有覆蓋狀態欄,而是覆蓋了根UIViewController底部提到的UISegmentedControl。它得到解僱

[self dismissModalViewControllerAnimated:YES]; 

這就是麻煩開始的地方。 UISegmented控件向下移動20個像素,以便在屏幕底部只能看到9個像素。 視圖向下移動的頂部有一個20像素的白色間隙。

*啓用此xib或任何其他xib上的狀態欄並不會改變所描述的行爲。相關

其他計算器的問題是:

IPhone - After dismissing Modal View Controller - gap is left at top of page - 但所提供的解決方案是沒有加載,顯示模式視圖控制器的子視圖另一個視圖控制器 - 但我不這樣做,只是UIViews。還有一種建議,即在模式消失後重新設置適當的框架,但感覺就像是作弊。

Contents of UIScrollView shifted after dismissing ModalViewController - 我玩過所有視圖和控制器的高度 - 確定它們匹配,沒有幫助。此外,該框架可以重置,但只能解決症狀。

還有其他的,但到目前爲止沒有任何解決這個問題。

+0

看着self.view。在即將顯示模式之前的幀,它是0,0,320,480。當模式被解除時,它變爲0,20,320,460。希望有所幫助。 – 2010-01-30 03:46:22

+0

我不相信有沒有解決方案。 – ZaBlanc 2011-01-23 17:32:15

回答

0

我剛剛解決了這個問題,視圖向下移動。 這是因爲navigationBar.barStyle設置爲UIBarStyleBlackTranslucent

0

這是一個黑客攻擊,但可能有助於某人。我在整個應用程序中遇到了大量的20個像素間隙問題,他們都使用導航控制器作爲我的根視圖控制器。我根本不用它作爲導航控制器(並且我隱藏了導航欄),所以此解決方案可以在大多數應用程序中使用。

基本上,我有一個基本視角(320×480,無狀態欄),其控制器坐在我的導航控制器,然後我的應用程序的其餘部分被添加作爲子視圖的基本視角。這一切現在都很好。

相關問題