5

ここで少し問題があります。同じストーリーボードに 2 つのビュー コントローラーがあります (MainStoryboard -> 縦向きモードの Calc ビュー コントローラーと横向きモードの Calc ビュー コントローラー)。最初に作成したときboolshouldAutoRotate回転しましたが、レンダリングの問題がありました. . これで、ランドスケープ モードとメインのポートレート モードで 2 つのビュー コントローラーを作成しました。したがって、ここで重要なのは、これら 2 つのコントローラーをローテーションで切り替えることです。

CalculatorViewController.mi には
UPDATE
があります iOS 6 でいくつかのメソッドが削除されたことに気付きました (そして、それは私が現在使用しているものです)。

@synthesize portraitView, landscapeView;

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations:toInterfaceOrientation
{
    if(UIInterfaceOrientationMaskAllButUpsideDown)
    {
        if ( UIInterfaceOrientationPortrait )
        {
            self.view = portraitView;
        }
        else if ( UIInterfaceOrientationLandscapeLeft )
        {
            self.view = landscapeView;
        }

    }
    return YES;

}    

ただし、iOS 6に関して正しい方法を使用していると思いますが、回転時に正しいビューコントローラーを呼び出すことができません

および CalculatorViewController.h で

@interface CalculatorViewController : UIViewController {


    IBOutlet UIView *portraitView; // declaring view - portrait
    IBOutlet UIView *landscapeView; // declaring view - landscape
    //rest of irrelevant code below

}
@property (nonatomic, retain) UIView *portraitView;
@property (nonatomic, retain) UIView *landscapeView;

ここに画像の説明を入力 2 つの白いコントローラーは無視してください。これらの2つのView Controllerを表示するために画像を送信しています

お時間をいただきありがとうございます

4

1 に答える 1

3

私はこのようなことを数回行いましたが、ViewController に空白のビューを持たせる方が簡単な場合がよくあります。次に、ランドスケープビューをランドスケープのプライムサブビューとして追加し、ポートレートなどに回転するときに削除します。個別の VC を使用しようとすると、スムーズに移行するためだけにコードを保存する状態がごちゃごちゃになります。

両方を常にサブビューにし、必要に応じて表示/非表示にすることで、このデザインをいじることもできます。これはより多くのメモリを消費しますが、いくつかの優れた遷移アニメーションを実行できます。

そうすれば、すべての接続とロジックが単一の VC になり、インターフェイスだけが変更されます。

于 2013-02-19T22:16:19.273 に答える