7

メインウィンドウに背景画像があるので、ビューを反転すると、背後にある空白の白い画面ではなく、画像になります。私の問題は、デバイスが回転してもこの画像が回転しないことです。

編集:私が知る限り、この場合は背景画像を手動で回転させる必要があるとブレットが指摘したとき、ブレットは正しかった. 将来的に他の人に役立つ場合に備えて、これが私がどのように回転させたかです.

内部myAppDelegate:

- (void) application:(UIApplication *)application
        willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation
        duration:(NSTimeInterval)duration
{
    if (newStatusBarOrientation == UIInterfaceOrientationPortrait)
        self.bgImage.transform      = CGAffineTransformIdentity;
    else if (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
        self.bgImage.transform      = CGAffineTransformMakeRotation(-M_PI);
    else if (UIInterfaceOrientationIsLandscape(newStatusBarOrientation))
    {
        float rotate    = ((newStatusBarOrientation == UIInterfaceOrientationLandscapeLeft) ? -1:1) * (M_PI / 2.0);
        self.bgImage.transform      = CGAffineTransformMakeRotation(rotate);
        self.bgImage.transform      = CGAffineTransformTranslate(self.bgImage.transform, 0, -self.bgImage.frame.origin.y);
    }
}
4

2 に答える 2

7

UIWindow は回転イベントを子コントローラーに渡すと思います。ウィンドウにはルート ビュー コントローラー ビューが含まれている必要があり、回転イベント メッセージをビュー コントローラーに渡して回転を管理します。

アプリのデリゲートでこれらのイベントをリッスンし、画像の回転を手動で管理できるはずです。それ以外の場合は、イメージをルート ビュー コントローラーのサブビューとして追加するだけです。

于 2011-08-15T19:39:17.090 に答える
0

rootViewController で、次のメソッドを実装していることを確認してください。

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

rootViewController は、おそらく 2 つの UIView を持つ単純な UIVIew であり、1 つは背景イメージ ビュー用で、もう 1 つはメイン インターフェイス ビュー用です。

于 2011-08-15T19:54:20.837 に答える