iOS6的定位问题

iOS6的定位问题

问题描述:

我在iOS 6的应用定位方面存在问题。即使设置为“横向(右侧主页按钮)”和“横向(左侧主页按钮)”,它也会显示为“肖像“扭曲的应用程序。iOS6的定位问题

我一直在努力与RootViewController.m,但没有运气!

这是代码,有人可以帮我吗?

@implementation RootViewController 

    /* 
    // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
// Custom initialization 
} 
return self; 
    } 
    */ 

    /* 
    // Implement loadView to create a view hierarchy programmatically, without using a nib. 
    - (void)loadView { 
    } 
    */ 


    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
    - (void)viewDidLoad { 
[super viewDidLoad]; 
    } 



    // Override to allow orientations other than the default portrait orientation. 
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

// 
// There are 2 ways to support auto-rotation: 
// - The OpenGL/cocos2d way 
//  - Faster, but doesn't rotate the UIKit objects 
// - The ViewController way 
// - A bit slower, but the UiKit objects are placed in the right place 
// 

    #if GAME_AUTOROTATION==kGameAutorotationNone 
// 
// EAGLView won't be autorotated. 
// Since this method should return YES in at least 1 orientation, 
// we return YES only in the Portrait orientation 
// 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 

    #elif GAME_AUTOROTATION==kGameAutorotationCCDirector 
// 
// EAGLView will be rotated by cocos2d 
// 
// Sample: Autorotate only in landscape mode 
// 
if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
    [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeRight]; 
} else if(interfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    [[CCDirector sharedDirector] setDeviceOrientation: kCCDeviceOrientationLandscapeLeft]; 
} 

// Since this method should return YES in at least 1 orientation, 
// we return YES only in the Portrait orientation 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 

    #elif GAME_AUTOROTATION == kGameAutorotationUIViewController 
// 
// EAGLView will be rotated by the UIViewController 
// 
// Sample: Autorotate only in landscpe mode 
// 
// return YES for the supported orientations 

return (UIInterfaceOrientationIsLandscape(interfaceOrientation)); 

    #else 
    #error Unknown value in GAME_AUTOROTATION 

    #endif // GAME_AUTOROTATION 


// Shold not happen 
return NO; 
    } 

    // 
    // This callback only will be called when GAME_AUTOROTATION == kGameAutorotationUIViewController 
    // 
    #if GAME_AUTOROTATION == kGameAutorotationUIViewController 
    -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
// 
// Assuming that the main window has the size of the screen 
// BUG: This won't work if the EAGLView is not fullscreen 
/// 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGRect rect = CGRectZero; 


if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)  
    rect = screenRect; 

else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    rect.size = CGSizeMake(screenRect.size.height, screenRect.size.width); 

CCDirector *director = [CCDirector sharedDirector]; 
EAGLView *glView = [director openGLView]; 
float contentScaleFactor = [director contentScaleFactor]; 

if(contentScaleFactor != 1) { 
    rect.size.width *= contentScaleFactor; 
    rect.size.height *= contentScaleFactor; 
} 
glView.frame = rect; 
    } 
    #endif // GAME_AUTOROTATION == kGameAutorotationUIViewController 


    - (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
[super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
    } 

    - (void)viewDidUnload { 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
    } 


- (void)dealloc { 
[super dealloc]; 
} 



@end 

请帮帮我!谢谢!

shouldAutorotateToInterfaceOrientation未在iOS 6中使用;请参阅UIViewController documentation顶部的“处理视图旋转”。没有进一步的工作,你只会得到你在项目设置中提名的任何东西。

在iOS 5及更早版本,您已经有了:

return (interfaceOrientation == UIInterfaceOrientationPortrait); 

所以在这些系统上你明确地限制该视图控制器为纵向。

你需要在你的AppDelegate.mm文件中检查这个。检查是否存在以下代码行

// Supported orientations: Landscape. Customize it for your own needs 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 
+0

它不存在,只是添加它,但我仍然遇到同样的问题。 – esierr1