Hi, it's been a while since I posted some thing.
Ok, This post is to fix the auto-rotation problem that has been around since the release of iOS6.
To be clear, the problem is that iOS6 doesn't support - 
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation; any more. And hence, our apps/code won't behave as expected any more.
In this post, I'll be using three methods/callbacks were introduced in iOS6 which are 
(BOOL)shouldAutorotate, 
- (NSUInteger)supportedInterfaceOrientations and (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window.
One important thing to know, 
(BOOL)shouldAutorotate and 
(NSUInteger)supportedInterfaceOrientations are added to the topmost parent of the view controller that you want to control its rotation. if, of-course, the view controller is a root view controller, then these methods will be added to it directly.
I hate to repeat myself, but for the sake of clarification, if your root-view-controller is a navigation-controller and you want to control the rotation of a view-controller inside the navigation-controller then  
(BOOL)shouldAutorotate and 
(NSUInteger)supportedInterfaceOrientations will be added to the navigation-controller NOT the view-controller itself.
If you have a tab-bar-controller that contains a navigation-controller inside which lies the view-controller that you want to control its rotation, then 
(BOOL)shouldAutorotate and 
(NSUInteger)supportedInterfaceOrientations will be added to the topmost parent which is - in this case - the tab-bar-controller.
How to add those methods to a tab-bar-controller or a navigation-controller?
- By subclassing them and overriding the methods inside them.
- By adding them to a category of your tab-bar-controller's or navigation-controller's type. I like this method because, it's simpler specially if the code is already written and i'm doing some slight modifications.
Now, lets take the case of a tab-bar-controller that contains a navigation-controller inside which lies the view-controller that you want to control its rotation as an example. you'll do as follows:
- add (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window to your appdelegate as follows: - (NSUInteger)application:(UIApplication *)application 
supportedInterfaceOrientationsForWindow:(UIWindow *)window {  
   return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |  
       UIInterfaceOrientationMaskLandscapeRight);  
 }  
 
- create a category inside your appdelegate as follows:
  @implementation tab-view-controller (fixingRotation)  
   
 - (BOOL)shouldAutorotate {  
    
   if ([((UINavigationController *)[[((AppDelegate *)[[UIApplication sharedApplication]
 delegate]).tabBarController viewControllers] objectAtIndex:self.selectedIndex])
.visibleViewController isKindOfClass:[myViewController class]]) {  
       
     return YES;  
   }  
   else{  
       
     return NO;  
   }  
 }  
 -(NSUInteger) supportedInterfaceOrientations {  
   return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |  
       UIInterfaceOrientationMaskLandscapeRight);  
 }  
   
 @end  
 
 
 
And your done.
)interfaceOrientation from your code to keep supporting iOS5.
Android, density independent pixel (dp) to pixels(px)