1

私はアプリケーションでUINavigationControllerを使用しており、最初のコントローラーはAと呼ばれ、ポートライトのみに厳密であり、Aコントローラーにボタンがあります。ボタンをクリックすると、 Bと呼ばれる別のビューコントローラーへのインスタンスが作成されます。BIのインスタンスを作成した後、以下のメソッドを使用してモーダルに表示しています

[self presentViewController:BInstance animated:YES completion:^{
            NSLog(@"completed");
        }];

私のBコントローラーは、ios5.1以前のバージョンまで、すべての方向をサポートできます。これは予想されます。Xcode4.5を使用してiOS6でプロジェクトを実行しようとしていますが、ローテーションされていません。shouldAutorotateToInterfaceOrientationに関するブログのいくつかを見つけた問題を解決するのを楽しみにしています。メソッドは最新のios6から非推奨になりました。私も代替を使用しました

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

しかし、それでも期待される結果はあまりありません。

質問:私の親Aがポートライトに対してのみ機能する場合でも、私のBコントローラーがすべての方向で機能する理由は何ですか。

事前に感謝しますこれに役立つすべての提案/アドバイス。

4

1 に答える 1

5

まず、AppDelegate で、これを記述します。これは非常にインプです

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return (UIInterfaceOrientationMaskAll);
}

次に、 PORTRAITモードのみが必要なUIViewControllersの場合、これらの関数を記述します

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskPortrait);
}

LANDSCAPEも必要とする UIViewController の場合は、マスキングを All に変更します。

- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskAllButUpsideDown);
    //OR return (UIInterfaceOrientationMaskAll);
}

Orientation が変更されたときに何らかの変更を行いたい場合は、この関数を使用します。

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

}
于 2012-10-03T10:27:59.630 に答える