У меня есть приложение, которое имеет только ландшафтные виды, которые даже начинаются в альбомной ориентации.Это работало нормально в iOS 5.x, но перестало работать в iOS 6.x
Перепробовав многие вещи, некоторые более сомнительные, чем другие, я нашел решение, которое для меня ясное и предсказуемое.
Я сделал несколько вещей.
- Я сохранил представления в альбомном режиме в IB.
- Я проверил оба ландшафтных режима в настройках проекта - там было четыре иконки, чтобыуправляйте им
- Ориентация mgmt изменилась в iOS 6.x.Мне пришлось переписать несколько методов для поддержки перехода на альбомную
этот метод для iOS 5.x
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations.
return (interfaceOrientation & UIInterfaceOrientationMaskLandscape);
}
эти 2 метода для iOS 6.x
- (NSUInteger)supportedInterfaceOrientations
{
NSUInteger supportedOrientations = UIInterfaceOrientationMaskLandscape;
return supportedOrientations;
}
- (BOOL)shouldAutorotate
{
return YES;
}
- Но ключ был в том, чтобы изменить логику в AppDelegate.Исходный код, который у меня был, был добавлением подпредставления (controller.view) к окну.Это перестало работать в iOS 6.x - я изменил вызов на window.setRootController.Это был последний шаг, который запечатал его - он не будет работать без внесения этого последнего изменения
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//[self.window addSubview:viewController.view];
[self.window setRootViewController:viewController];
[self.window makeKeyAndVisible];
return YES;
}