2012-09-19 39 views
0

我有一些佈局問題,當我在縱向模式下啓動我的應用程序,然後將其轉換爲橫向模式時,在此之後打開的視圖正在爲旋轉返回錯誤的值。在viewDidLoad中觸發旋轉

舉例來說,我開在橫向模式視圖它是從縱向模式旋轉後,當我登錄旋轉它仍返回人像模式:

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 4 
NSLog(@"%f/%f", self.view.frame.size.width, self.view.frame.size.height); // 748.000000/1024.000000 

當我轉動iPad來肖像模式和回到風景模式它返回合適的尺寸

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 1 
NSLog(@"%f/%f", self.view.frame.size.width, self.view.frame.size.height); // 1024.000000/704.000000 

有什麼我需要做的,以使新增視圖適應旋轉?

+0

現在我解決了它,在我的主視圖中跟蹤設備的寬度和高度,可能不是最好的解決方案,但它的工作原理。 –

回答

0

這是因爲您的視圖第一次被人像爲肖像模式。所以你必須在viewDidLoad中手動檢查和旋轉視圖。

if (UIInterfaceOrientationIsLandscape(orientation)) 
{ 

    [self.view setFrame:VIEW_LANDSCAPE_FRAME]; 

    //do more stuff 

} 
+0

'orientation'從哪裏來?如果我使用'[[UIDevice currentDevice]方向]],它將在橫向模式下添加時返回錯誤的值。 –

0

嘗試在this link。它爲我工作。如在willAppear中的鏈接中那樣做比在viewDidLoad中更好。還請確保您已在shouldAutorotateToInterfaceOrientation方法中返回了所需的方向,並在info.plist中設置了正確的密鑰UIInterfaceOrientation

3

在viewWillAppear方法中設置您的視圖的新框架。這會將所有項目設置爲正確的大小,如果您使用的是導航控制器,則在推送和彈出視圖時可以使用該功能。