3

UINavigationController( )の最初のサブクラスはNavigatorルート コントローラーであり、すべての方向をサポートします。サブクラスはオーバーライドsupportedInterfaceOrientationsし、どの方向がサポートされているかを設定するプロパティを提供します。

Navigators ナビゲーション スタック ( のサブクラス)のルート ビュー コントローラーは、UITableViewContrellerサポートされている向きを制御します (どのビュー コントローラーがスタックの一番上にあるかによって異なります)。オーバーライドNavigatorで方向プロパティを設定します。didSelectRowAtIndexPath

デバイスが別の方向にあるときに遷移が行われ (現在のビューはそれをサポートしておらず、これは対話するための想定された方法ではないため)、新しいビューがそのデバイスの方向をサポートしている場合、ビューはデバイスの方向とは異なる方向のままになります。次に、デバイスを回転させて元に戻し、適切な向きにする必要があります。

これは、誰かが何らかの理由で連絡先アプリで横向きモードでデバイスを保持している場合ですが、突然そのサブビューの 1 つが横向きをサポートし、デバイスを縦向き、次に横向きに回転することなく自動的に回転します。問題は、それをどのように実装するかです。

4

3 に答える 3

1

すべてのメソッドでこれを使用します。

if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || 
    ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) 
{       

} 
else 
{

}

または[[UIScreen mainScreen] bounds]

于 2013-03-14T13:36:25.340 に答える
0

これはあなたが欲しいものだと思います。

デバイスの向きを取得するには:

[[UIDevice currentDevice] orientation];

表示されたビューの現在の方向を取得するには、次のようにします。

[UIApplication sharedApplication].statusBarOrientation;
于 2013-03-14T14:12:04.093 に答える
0

このメソッドをUINavigationControllerのサブクラスに追加します。

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        return;

    if ([UIViewController respondsToSelector:@selector(attemptRotationToDeviceOrientation)]) {
        //present/dismiss viewcontroller in order to activate rotating.
        UIViewController *mVC = [[UIViewController alloc] init];
        [self presentModalViewController:mVC animated:NO];
        [self dismissModalViewControllerAnimated:NO];
    }
}

(ここSFで見つかりましたが、その質問へのリンクが見つかりません)

于 2013-03-14T15:48:23.000 に答える