iOS6 ломает автоповорот по умолчанию и альбомную ориентацию в бета-версии cocos2d 1.0

В стандартном бета-шаблоне cocos2d 1.0 AppDelegate.m содержит некоторый код:

// AppDelegate.m
// IMPORTANT:
// By default, this template only supports Landscape orientations.
// Edit the RootViewController.m file to edit the supported orientations.

#if GAME_AUTOROTATION == kGameAutorotationUIViewController
    [director setDeviceOrientation: kCCDeviceOrientationPortrait];
#else
    [director setDeviceOrientation: kCCDeviceOrientationLandscapeLeft];
#endif

Далее, в GameConfig.h мы определили:

// GameConfig.h
#define kGameAutorotationNone 0
#define kGameAutorotationCCDirector 1
#define kGameAutorotationUIViewController 2
//
// Define here the type of autorotation that you want for your game
#define GAME_AUTOROTATION kGameAutorotationUIViewController

Вместе это работало над созданием ландшафтной настройки, которая автоматически поворачивалась либо в альбомную лево, либо в альбомную вправо в зависимости от того, как вы держите устройство. TableViews также автоматически поворачиваются (у меня есть несколько таблиц, размещенных поверх некоторых cocos2d CSCcenes).

Однако... вчера вечером я обновился до iOS6. Как и XCode 4.5.

Я надеюсь, что это не только я, но ротация моего приложения теперь полностью нарушена. Я пытаюсь исправить это с помощью кода по крайней мере для одного представления таблицы... изменение GAME_AUTOROTATION, похоже, не влияет на представления таблиц, а только на cocos2d CCScenes (что в некотором роде является половиной решения).

Я могу просто начать с нуля и создать что-то вместо того, чтобы работать с заранее написанным кодом, это просто мега-разочаровывает!! Большое спасибо, Apple!


person Mike Bell    schedule 22.09.2012    source источник
comment
Это способ настройки cocos2d v1.x для выполнения автоповорота, который не работает с iOS 6. Дополнительная информация: cocos2d-iphone.org/forum/topic/40721 и здесь cocos2d -iphone.org/forum/topic/33326 Кстати, как разработчик вы должны ожидать серьезных изменений при обновлении до новых версий. Apple имеет право вносить изменения, и вы обязаны проверить, могут ли какие-либо из этих изменений конфликтовать с вашим приложением или программным обеспечением/библиотеками, которые вы используете.   -  person LearnCocos2D    schedule 24.09.2012
comment
Я здесь не для того, чтобы начинать войну с тем, что является и что не является приемлемой практикой в ​​сообществе разработчиков, но эта вторая половина чувствует себя снисходительно. Я делаю все возможное, чтобы заставить все работать и разрешать конфликты в моем коде, которые приводят к нежелательным результатам на разных устройствах. Спасибо   -  person Mike Bell    schedule 24.09.2012


Ответы (2)


Мое частичное решение

#if GAME_AUTOROTATION == kGameAutorotationUIViewController
    //[director setDeviceOrientation:kCCDeviceOrientationPortrait];
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeRight];
#else
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
#endif

У вас есть лучшее решение?

Спасибо

person snieves    schedule 26.09.2012
comment
Посетите cocos2d-iphone.org/forum/topic/40721. Частичные ответы не должны публиковаться таким образом. Почитайте stackoverflow.com/faq - person Ben Trengrove; 27.09.2012

Ответ состоял в том, чтобы обновить мои вещи до cocos2d 2.0 и удалить зависимость от RootViewController, который больше не используется.

navController_ = [[UINavigationController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;

[window_ setRootViewController:navController_];
person Mike Bell    schedule 28.09.2012