2

サポートされているインターフェイスの向きを、配置情報の下で逆さまの縦向き以外のすべてに設定しました。

カスタム動作のために shouldAutorotateToInterfaceOrientation: をオーバーライドしたいと思います。(つまり、条件に応じてランドスケープをサポートします)

制約 (カスタマイズされたビュー遷移) により、ビューコントローラーは 1 つしかありません。

これは私のappdelegateのコードがどのように見えるかです:

self.viewController = [[MyController alloc]initWithNibName:nil bundle:nil];

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

myController.m では、shouldAutorotateToInterfaceOrientation をオーバーライドします。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}

アプリケーションはすべての向きに自動回転しますが、縦向きが逆になり、コールバックが呼び出されることはありません。shouldAutorotateToInterfaceOrientation: at runTime からの変更リターンで提案を試みましたが、成功しませんでした。なぜ?

ちなみに、実行時に回転サポートを変更する最良の方法は何ですか?

アップデート:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

呼ばれます。入れてみました

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

成功しませんでした:(

4

2 に答える 2

4

iOS6を使っていた

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

iOS6では非推奨です

于 2012-09-10T08:48:11.207 に答える
1

それは私のために働いています:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;
    if ([self isKindOfClass:[YourViewController class]]) { // Your view class
        orientations |= UIInterfaceOrientationMaskPortraitUpsideDown;
    }
    return orientations;
}

向き:

orientations |= UIInterfaceOrientationMaskLandscapeLeft;
orientations |= UIInterfaceOrientationMaskLandscapeRight;
于 2013-03-08T11:13:27.767 に答える