1

iOS 5で正常に動作する 4 つの方向すべてをサポートするアプリがあります。

ただし、iOS 6では、すべてのUIViewControllerクラスが適切に回転しますが、UITableViewControllerクラスはPortraitUpsideDownに回転しません。

アプリでサポートされている方向には、4 つのオプションすべてが含まれます。

AppDelegate はすべての向きをサポートします。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

私のビュー クラスはすべて、iOS 6 で導入されたものを含め、必要なメソッドを実装しています。

- (NSUInteger)supportedInterfaceOrientations
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

- (BOOL)shouldAutorotate
{
    BOOL bReturn = [self shouldAutorotateToInterfaceOrientation:self.interfaceOrientation];
    return (bReturn);
}

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

私が見つけることができる唯一の違いは、ビューの表示方法です。

UIViewController

InfoViewController *infoController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:[NSBundle mainBundle]];
[self presentModalViewController:infoController animated:YES];

UITableViewController

MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:menuController];
[self presentModalViewController:navigationController animated:YES];

実装がローテーションにどのような影響を与えるかは完全にはわかりません。

ガイダンスをいただければ幸いです。

4

2 に答える 2

5

上記のコメントに基づいて、UINavigationControllerを継承する新しいクラスを作成し、サポートされている向きを識別するメソッドを追加しました。

- (NSUInteger)supportedInterfaceOrientations
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

次に、UITableViewControllerのModalViewControllerを提示する必要がある場合は、新しいRotationNavigationControllerクラスのオブジェクトを作成します。

私の問題をすべて解決したようです。

于 2013-02-27T03:02:42.627 に答える
0
    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
            if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
                return  UIInterfaceOrientationMask(rawValue: UIInterfaceOrientationMask.Portrait.rawValue | UIInterfaceOrientationMask.PortraitUpsideDown.rawValue)
            } else {
                return .All
            }
    }
于 2016-05-17T15:45:32.683 に答える