2013-02-01 87 views
-1

定向方法已在iOS 6中發生了變化。 我的整個應用程序在縱向模式下都有許多視圖控制器(不是標籤欄視圖控制器)我只想將視圖控制器之一旋轉到橫向模式(它實際上顯示網頁視圖)當我轉動下面方法device.the在Xcode 4.4是工作,但它不是在Xcode.4.5ios 6定位方法

- (BOOL)shouldAutorotateToInterfaceOrientation: 
    (UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationPortrait || 
interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
interfaceOrientation == UIInterfaceOrientationLandscapeRight); 

上述方法將無法在Xcode 4.5工作,爲此我已經改變下面的方法,但即使它不工作.... PLZ任何建議謝謝。

- (BOOL) shouldAutorotate{ 
[[UIApplication sharedApplication] setStatusBarOrientation:   UIInterfaceOrientationPortrait]; 
    return self.modalViewController.shouldAutorotate; 
} 
-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 
+0

你已經證明了旋轉的旋轉代碼不是的iOS 5和iOS 6相同看一看'UIInterfaceOrientationMaskAllButUpsideDown'。這裏 –

+0

檢查它可以幫助你http://stackoverflow.com/questions/8738462/uisplitviewcontroller-and-orientation-ios-5-0/10620672#10620672 – Ram

+0

Xcode是隻是一個IDE使用4.4或4.5的IDE的羯羊並不重要。也許你切換目標SDK? –

回答

1

您是否使用標籤欄視圖控制器?如果你使用它,那麼即使你只想旋轉一個,所有標籤中的所有視圖控制器都應該能夠旋轉。

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

這應該在iOS6中正常工作。


如果使用UINavigationViewController,那麼將調用它的方法。還有另一種解決方案。

// App delegate.m 
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    NSUInteger orientations = UIInterfaceOrientationMaskAllButUpsideDown; 

    if(self.window.rootViewController){ 
     UIViewController *presentedViewController = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject]; 
     orientations = [presentedViewController supportedInterfaceOrientations]; 
    } 

    return orientations; 
} 

然後在視圖控制器

- (NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
+0

假設你正在使用UINavigationController,那麼情況相同:應該調用shouldAutorotate&supportedInterfaceOrientations方法。我已經更新了我的代碼摘錄的答案,其他的解決辦法是繼承UINavigationViewController。基本上你需要製作視圖控制器的應用程序調用方法,而不是包裝視圖控制器。 – asdf

+0

HI首先感謝您的回覆。是的,我在我的應用程序委託使用的UINavigationController我加入你的didFinishLaunchingWithOptions方法後,給了我,也放置在視圖控制器的另一NSUIntegersupportedInterfaceOrientations我需要旋轉到landscape.but這是行不通的,在all.i與嘗試過的代碼另一種方式,實際上我得到了應用程序委託中的代碼isself.window addSubview:navigationController.view;我改變這一個window.rootViewController = navigationController現在它旋轉整個app.but我需要一個應用 –

+0

@ShivaVattem很難說沒有看到的項目,也許你可以創建你的情況下小例子,並上傳到GitHub上? – asdf