我已檢查了其他答案,但還沒有找到任何真正描述我的情況的東西。所以在這裏。舊顯示屏移位後模態視圖控制器問題
我有一個基於窗口的應用程序,它可以從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 - 我玩過所有視圖和控制器的高度 - 確定它們匹配,沒有幫助。此外,該框架可以重置,但只能解決症狀。
還有其他的,但到目前爲止沒有任何解決這個問題。
看着self.view。在即將顯示模式之前的幀,它是0,0,320,480。當模式被解除時,它變爲0,20,320,460。希望有所幫助。 – 2010-01-30 03:46:22
我不相信有沒有解決方案。 – ZaBlanc 2011-01-23 17:32:15