2011-03-15 43 views
3

我有以下代碼來顯示作爲我的tabBarController的子視圖添加的模式視圖。然而,儘管使用autoresizingMask屬性允許當話蜂窩呼叫頂部打斷我的應用程序,並顯示綠色的狀態欄,我覺得這個事件之後整個視圖是由20個像素移位向下正在移動的模態視圖

- (void) showLogin:(UIView*) modalView 
    { 
    CGPoint middleCenter = CGPointMake(160, 226); 
    CGSize offSize = [UIScreen mainScreen].bounds.size; 
    CGPoint offScreenCenter = CGPointMake(offSize.width/2.0, -210); // start from top 
    modalView.center = offScreenCenter; // we start off-screen 
     modalView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin; 
    [self.tabBarController.view addSubview:modalView]; 

    // Show it with a transition effect 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.4]; // animation duration in seconds 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    modalView.center = middleCenter; 
    [UIView commitAnimations]; 
    } 

如何解決這個? 謝謝

+0

說明:當你說,「整個視圖是流離失所」,你的意思是modalView或tabBarController.view。 – TechZen 2011-03-15 23:42:46

+0

從全屏視頻返回時,我遇到類似的模式問題。 – 2011-03-15 23:51:29

+0

對不起,它的模態視圖向下移動的綠色酒吧的高度。 – tech74 2011-03-16 07:00:09

回答

2

這不是模擬器還是設備問題?

在模擬器上,該條僅顯示。但是這絕不會在真實設備上發生。

你永遠不會在真實設備的頂部獲得綠條。相反,您的應用將會消失。當你的應用程序「返回」時,視圖將被完全重建。

+0

不,這絕不會發生在模擬器上,當您撥打移動電話然後從內置電話應用程序切換到另一個應用程序時,您將獲得的條目仍然處於活動狀態 – tech74 2011-03-16 06:56:14

+0

只是爲了澄清其「觸摸到」回電話' – tech74 2011-03-16 06:57:33

+0

是的,這就是我的意思吧。在真實的設備上,它永遠不會出現。你會被髮送到後臺,當你被帶回到前臺時,你的視圖會重新佈局。如果它沒有正確調整大小,則調整大小屬性是錯誤的。請參閱響應中斷在這裏:http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html – 2011-03-27 06:21:07

1

爲什麼不只是在酒吧的頂部提供一個模式視圖控制器?

當然,你必須將你的modalView包裝到視圖控制器中,但這不應該是一個問題。

[self.tabBarController.view presentModalViewController: ... animated: YES]; 
1

可以在self.tabBarController.view覆蓋-(void)layoutSubviews,檢查該視圖的新範圍,並重新定位手工登錄查看邊界的變化。