0

私はすべての向きをサポートする iPhone アプリを持っていますが、1 つの UIViewController では縦向き (または逆さま) のみをサポートしたいと考えています。

次のコードを UIViewController に追加しましたが、それでも回転します。

public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation     toInterfaceOrientation)
    {
        // Return true for supported orientations
        return ((toInterfaceOrientation != UIInterfaceOrientation.LandscapeLeft) && (toInterfaceOrientation != UIInterfaceOrientation.LandscapeRight));
    }

ShouldAutorotateToInterfaceOrientation コードをどこに追加しても、回転します!

アプリが 1 つを除くすべての UIViewControllers のすべての向きをサポートできるようにする方法はありますか?

また、私は NavigationController を使用しています - それは物事に影響しますか?

4

2 に答える 2

0

iOS 6 を使用している場合は、代わりに GetSupportedInterfaceOrientations メソッドをオーバーライドする必要があります。

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
    { ... }
于 2012-12-04T13:10:36.807 に答える
0

おそらくこれは、ルート ナビゲーション コントローラーが独自のローテーションをもたらすために発生します。ルート ナビゲーション コントローラーが通常の UINavigationViewController であると仮定しましょう。派生した独自のバージョンを作成します。

public class UINavigationControllerWithoutRotation : UINavigationController
{
    public UINavigationControllerWithoutRotation()
    {
    }

    public UINavigationControllerWithoutRotation(UIViewController viewController) : base(viewController)
    {
    }

    public override bool ShouldAutorotate()
    {
        return false;
    }
}

これをルートコントローラーとして使用します。次のようなコードを見つけます。

var myRootController = new UINavigationController();

そしてそれを

var myRootController = new UINavigationControllerWithoutRotation();

それは仕事をするはずです。たとえば、ルート ビュー コントローラーが UITabBarController の場合は、少し異なる方法で行う必要があることに注意してください。

于 2014-01-23T17:15:35.257 に答える