2010-06-04 53 views
1

我在應用程序中添加了一個自定義狀態欄,用於監視上傳進度。這可以在縱向模式下正常工作,但是當我處於橫向模式並且出現自定義狀態欄時,它始終顯示在主頁按鈕的另一側。我認爲這是因爲我很難編碼我的框架。以編程方式在iPad上添加子視圖,硬編碼幫助

我將XIB文件設置爲自動調整其長度。

看看:

-(void) animateStatusBarIn { 
float x = window.frame.origin.x; 
float y = window.frame.origin.y; 
float height = 20; 
float width = window.frame.size.width; 
CGRect statusFrame = CGRectMake(x, y-20, width, height); 
iPadUploadStatusBar *statusView = [[iPadUploadStatusBar alloc] initWithNibName:@"iPadUploadStatusBar" bundle:nil]; 

self.status = statusView; 

[statusView release]; 

status.view.frame = statusFrame; 
[window addSubview:status.view]; 

[UIView beginAnimations:@"slideDown" context:nil]; 
[UIView setAnimationDuration:0.3]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 
statusWindow.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 20.0f);  
[UIView commitAnimations]; 
} 

全部爲縱向不錯,但就像我說的,它總是判定爲新的狀態欄應該去的Home鍵相反。請幫忙!!!

順便說一句,這裏面AppDelegate.m,所以我使用的是現有的窗口,在默認的appDelegate文件 感謝

回答

1

首先,你在哪裏打電話給你-animateStatusBarIn方法?

旋轉發生時,您不必爲iPadUploadStatusBar的視圖設置框架(如果每次方向更改時都調用animateStatusBar方法)。

您所要做的就是在iPadUploadStatusBar筆尖中正確設置視圖的自動識別遮罩,並將其作爲子視圖添加到窗口或已經是窗口子視圖的viewController視圖中。旋轉及其動畫全部自動處理。

+0

我從上傳已經開始的NSNotification調用animateStatusBarIn。它不被視爲旋轉視圖。問題是,框架總是與主頁按鈕相反並垂直的長矩形。所以在縱向模式下,它很好,但在橫向模式下,它在屏幕的一側朝上和朝下。我已將視圖設置爲在IB中調整其寬度,並且viewController支持所有方向 – Justin 2010-06-04 12:46:10

+0

我已通過編寫一個示例將旋轉消息僅發送給其視圖已添加到窗口的FIRST viewController中進行了確認。所以你在-animateStatusBarIn方法中將視圖添加到窗口中,這顯然不是窗口中第一個viewController的視圖,因此它沒有獲取旋轉事件。 有關更多詳細信息,請查看此問題的接受答案:http://stackoverflow.com/questions/548142/uiviewcontroller-rotate-methods 對於您的解決方案是保持單獨的空間在您的主viewController statusBar和添加「iPadUploadStatusBar」子視圖在那裏。 – 2010-06-07 05:39:34

相關問題