0

iPadの向きが変更されたときにUIImageViewの画像を変更するために次のコードを使用しています

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{
if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight))
{
    self.background=self.background_D;
    self.backgroundImage.backgroundColor = [UIColor colorWithPatternImage:self.background];
} 
else  if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown))
{
    self.background=self.background_P;
    self.backgroundImage.backgroundColor = [UIColor colorWithPatternImage:self.background];
} 
}

向きを変更すると、少し停止してから画像が変わることを除いて、すべて正常に機能しています。その間、同じ古い画像がタイル形式で表示されます。これを避けるにはどうすればよいですか?

サミット

4

1 に答える 1

0

たとえば、コンテンツと実装の両方で 2 つのビューを使用しwillRotateToInterfaceOrientation:、そこにアニメーションを配置して、一方のビューをフェードアウトさせ、もう一方のビューをフェードインさせることができます。終わり。アニメーション化するbeginAnimations:には、関連するメソッドまたは iOS 4 以降のいずれかを使用します[UIView animateWithDuration:delay:options:animations:completion:]http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorialは、アニメーションのスターターです。

さらに良い方法はwillAnimateRotationToInterfaceOrientation:duration:、アニメーション ブロック内で既に呼び出されている which を実装することです。ここでは、ブロックのアルファ値を再構成するだけでよく、あとはアニメーションが行います。willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:別の方法として、可視画像を非表示にする場所と他の画像を表示する場所を実装することもできることに注意してくださいwillAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:

于 2011-11-12T21:20:36.960 に答える