UIView не обрабатывает повороты, UIViewController делает.Итак, все, что вам нужно, это создать UIViewController, который реализует shouldAutorotateToInterfaceOrientation и устанавливает этот контроллер как rootViewController для вашего UIWindow
Что-то вроде этого:
UIViewController * vc = [[[MyViewController alloc] init] autorelease];
vc.view.frame = [[UIScreen mainScreen] bounds];
vc.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4];
//you vc.view initialization here
UIWindow * window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.windowLevel = UIWindowLevelStatusBar;
window.backgroundColor = [UIColor clearColor];
[window setRootViewController:vc];
[window makeKeyAndVisible];
и я использовал этот MyViewController, потомуЯ хочу, чтобы он отражал изменения основного приложения
@interface MyViewController : UIViewController
@end
@implementation MyViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
UIWindow *window = ((UIWindow *)[[UIApplication sharedApplication].windows objectAtIndex:0]);
UIViewController *controller = window.rootViewController;
if (!controller) {
NSLog(@"%@", @"I would like to get rootViewController of main window");
return YES;
}
return [controller shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
}
@end
, но вы всегда можете просто вернуть YES для любой ориентации или написать свою логику, если хотите.