私は現在 iOS アプリを作成しています。サポートされている方向は左右の横向きのみです。これをいくつかの方法で指定しました。
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); //iOS 5 compatibility.
}
-(NSInteger)supportedInterfaceOrientations:(UIWindow *)window{
return UIInterfaceOrientationMaskLandscape; //iOS 6
}
-(BOOL)shouldAutorotate{
return YES;
}
また、アプリの Info.plist で、サポートされている向きを横向きのみとして指定しました。デバイス (またはシミュレーター) でアプリを実行すると、ルート ビューが横向きになっていることがわかります (スイッチャーは画面の長辺にあり、通知センターも同様です)。私が望むように、左下または右上ではなく、縦向きモードの場合のように画面の左上隅。このコードは iOS 5 では機能しましたが、iOS 6 では機能しなかったため、コンテンツが親ビューで回転しない原因が何なのかわかりません。
編集:これが私のmain.mです:
#import <UIKit/UIKit.h>
int main(int argc, char **argv) {
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
int ret = UIApplicationMain(argc, argv, @"ClockApplication", @"ClockApplication");
[p drain];
return ret;
}
そして、ここに私のClockApplication.mmがあります:
#import "RootViewController.h"
@interface ClockApplication: UIApplication <UIApplicationDelegate> {
UIWindow *_window;
RootViewController *_viewController;
}
@property (nonatomic, retain) UIWindow *window;
@end
@implementation ClockApplication
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
_viewController = [[RootViewController alloc] init];
[_window addSubview:_viewController.view];
[_window makeKeyAndVisible];
}
- (void)dealloc {
[_viewController release];
[_window release];
[super dealloc];
}
@end