1

iPadでの回転中に背景画像を変更する次のコードがあります。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{    
if (![SysConfig isPhone]) {   // Only need to worry about this for the iPad 
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    if ([SysConfig isRetina]) {          
        if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation)) {
            [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Default-Portrait@2x~ipad.png"]]];
        } else {
            [[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Default-Landscape@2x~ipad.png"]]];
        }
        // retina display above, regular below
    } else {
    \\ Same thing but for low res display            
        }
    }
}
}

正常に動作しますが、元の背景画像が新しく回転したデバイスにタイル表示された瞬間が表示された後、回転して、新しい向きにうまく収まる新しい画像に移動するため、タイルは表示されません。タイリングの視覚効果を取り除きたいです。

SO を読んで、ある種のアニメーションでタイリングを非表示にする可能性があることを収集します (2 つの画像をクロス フェードするか、古い画像を縮小し、回転が発生すると新しい画像にスムーズに拡張します)。しかし、私はこれを適切な場所で行っているかどうかもわかりませんviewDidAppear viewWillAppear willAnimateRotationToInterfaceOrientation.

2 つの質問:

  1. このタイリング効果を回避するには、このコードを少し変更して別のメソッドに移動するだけです (効果のタイミングに影響する可能性があります)。
  2. より精巧なアニメーションを作成する必要がある場合、どの方法を使用すればよいですか? 例へのポインタはありますか?

ありがとう。私はたくさんの読書をしましたが、それをほぼ正しくする方法がたくさんあるようです.誰かがベストプラクティスについてコメントを持っていれば、私はそれを感謝します.

4

1 に答える 1

2

解決策: ポートレートとランドスケープのインスタンスを交換することを除いて、同じコードを入れてwillAnimateRotationToInterfaceOrientation、タイルの問題を修正しました。

于 2012-08-20T17:49:28.480 に答える