I have searched for a solution how to implement a ViewController that supports only LandscaleLeft and LandscapeRight mode. Most solutions I found on stackoverflow and other forums using a setOrientationMode selector on the device object:
NSNumber *value = [NSNumber numberWithInt: UIInterfaceOrientationLandscapeLeft]; [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
this could probably work for you, but it uses a non official selector. You may think of this: it is impossible for the program to actually physically turn around your device, but that is what your code would look like.
I finally ended up with a solution that does rotate the interface instead of the device. The following code is a working ViewController that does the trick by calling [UIViewController attemptRotationToDeviceOrientation].
///////////////////////////////////// /// VIEW CONTROLLER CODE @interface StartViewController : UIViewController -(id) initWithWindow:(UIWindow *)window; @property (nonatomic, retain) UIWindow * window_; @end // @interface StartViewController @implementation StartViewController -(void)dealloc { //cleanup code self.window_ = nil; [super dealloc]; } - (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation { return YES; } -(void)viewDidAppear:(BOOL)animated { [UIViewController attemptRotationToDeviceOrientation]; [super viewDidAppear:animated]; } -(void)viewWillAppear:(BOOL)animated { } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; } -(id) initWithWindow:(UIWindow *) window { [super init]; self.window_ = window; return self; } @end // implementation StartViewController ///////////////////////////////////// ///////////////////////////////////// /// APPLICATION CODE: - (void)applicationDidFinishLaunching:(UIApplication*)application { UIWindow * window = [[[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]] autorelease]; window.rootViewController = [[[StartViewController alloc] initWithWindow:window] autorelease]; [window makeKeyAndVisible]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; } /////////////////////////////////////