В моем приложении есть требование, чтобы оно отображало определенный альбомный вид всякий раз, когда пользователь переводит устройство в альбомный режим, и должно отображать последний вид, отображаемый при повороте назад.
У меня все заработало, но теперь проблема в том, что когда пользователь поворачивает устройство, чтобы переместить горизонтальную строку состояния, но при повороте его назад в портретную форму строка состояния не переходит в портретную ориентацию, а остается в ландшафтном режиме, когда изображение отображается в книжной ориентации.
Вот фрагменты кода, которые я использую:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
// Override point for customization after application launch.
UIViewController *viewController1, *viewController2, *viewController3, *viewController4, *viewController5;
// Create initialized instance of UITabBarController
tabController = [[UITabBarController alloc] init];
NSMutableArray *tabs = [[NSMutableArray alloc] init];
// Create first UIViewController
viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];
[viewController1 setTitle:@"Home"];
navController = [[UINavigationController alloc] initWithRootViewController:viewController1];
[tabs addObject:navController];
viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil];
[viewController2 setTitle:@"News"];
navController = [[UINavigationController alloc] initWithRootViewController:viewController2];
[tabs addObject:navController];
viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
[viewController3 setTitle:@"Music"];
navController = [[UINavigationController alloc] initWithRootViewController:viewController3];
[tabs addObject:navController];
viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController" bundle:nil];
[viewController4 setTitle:@"Gallery"];
navController = [[UINavigationController alloc] initWithRootViewController:viewController4];
[tabs addObject:navController];
viewController5 = [[FifthViewController alloc] initWithNibName:@"FifthViewController" bundle:nil];
[viewController5 setTitle:@"Shows"];
navController = [[UINavigationController alloc] initWithRootViewController:viewController5];
[tabs addObject:navController];
landscapeVC = [[LandscapeAboutViewController alloc] initWithNibName:@"LandscapeAboutViewController" bundle:nil];
[tabController setViewControllers:tabs];
self.window.rootViewController = tabController;
[self.window makeKeyAndVisible];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification object:nil];
return YES;
}
- (void) didRotate:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (UIDeviceOrientationIsLandscape(orientation)) {
if (self.window.rootViewController != landscapeVC) {
[self switchToLandScape];
}
}
else if (UIDeviceOrientationIsPortrait(orientation)){
if (self.window.rootViewController != tabController) {
[self switchToTabBar];
}
}
}
- (void)switchToTabBar {
self.window.rootViewController = tabController;
}
- (void)switchToLandScape {
self.window.rootViewController = landscapeVC;
}
Пожалуйста, помогите !!!!!
Спасибо