0

私はそれを知っています:デフォルトでは、アプリとView Controllerのサポートされているインターフェイスの向きは、iPadのイディオムではUIInterfaceOrientationMaskAllに設定され、iPhoneのイディオムではUIInterfaceOrientationMaskAllButUpsideDownに設定されています。そのため、Single View Application テンプレートを使用して新しいプロジェクトを作成したときに、iPhone ですべての向きを実行するために、以下の 2 つのメソッドを ViewController.m に追加します。そして、それはうまくいきます!

- (NSUInteger)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskAll;
}
- (BOOL)shouldAutorotate
{
    return YES;
}

次に、AppDelegate.m の以下のメソッドでいくつかのコードを変更して、アプリケーションのルート ビューを UIViewController から UINavigationController に変更しました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
    } else {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
    }
    if(myNavigationController == nil)
        myNavigationController = [[UINavigationController alloc]initWithRootViewController:self.viewController];

    self.window.rootViewController = self.myNavigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

その後、iPhone iOS6 シミュレーターで UIInterfaceOrientationPortraitUpsideDown を扱えなくなりました。どうすればそれを解決できますか? 古いトピックで少しコードを検索しようとしましたが、まだ機能しません。

4

1 に答える 1

0

myNavigationControllerプロパティですか?myNavigationControllerおよびとして参照しますself.myNAvigationController。特に ivar を参照するオブジェクトを初期化し、プロパティでウィンドウの rootViewController を設定するため、一貫性がないようです。

また、質問を明確にする必要があります。iPhoneを逆さまの縦向きに自動回転させる方法を尋ねていると思います。答えは次のとおりです。iPhone は (iPad とは異なり) 水平回転ロックをサポートしておらず、設計ガイドラインに反しています。

そうは言っても、すべてのviewControllerが回転デリゲートを実装していること、およびそれらがすべてiPhoneの上下逆回転をサポートしていることを確認したい場合があります。単一ビューのアプリケーション テンプレートから始めたとのことですが、ローテーションがブロックされる理由は他にないはずです。

編集:もう1つ確認する必要があるのは、ターゲット設定です。ここの「サポートされているインターフェイスの向き」セクションは、カスタム ローテーション コードをオーバーライドする場合があります。

于 2013-05-30T18:24:42.290 に答える