2

さて、ここでわかるように、「animationImages」を介して画像をアニメーション化したい UIImageView があります。

UIImage *img1 = [[UIImage imageNamed:@"image1.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 150, 20, 150)];
UIImage *img2 = [[UIImage imageNamed:@"image2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 150, 20, 150)];
self.imgStatus.animationImages = [NSArray arrayWithObjects:img1, img2, nil];
self.imgStatus.animationDuration = 1;
self.imgStatus.contentMode = UIViewContentModeScaleToFill;
[self.imgStatus startAnimating];

2 つの画像の幅は UIImageView の幅よりも小さいため、アニメーションで表示するときにこれらの画像のサイズを変更したいと考えています。ただし、アニメーションは「resizableImageWithCapInsets」でリサイズせず、UIImageView のフレームを埋めるようにスケーリングします。

それについて何か考えはありますか?どうすればいいですか?

ありがとう!!

4

1 に答える 1

1

私が見つけた解決策は、アニメーションを開始する前に、配列のすべての UIImage のサイズを変更する必要があるということです。したがって、セッター「setAnimationImages」と同様の手順でUIImageViewのこのカテゴリを作成しますが、その内部ではすべてのUIImageがUIImageViewフレームによってサイズ変更されます。また、UIImageView の「ContentMode」プロパティは「UIViewContentModeScaleToFill」として設定されます。

最後に、すべての UIImage で事前に "resizableImageWithCapInsets" を設定して、それぞれのサイズを変更する方法を知っておくことが非常に重要です。

例:

#import "UIImageView+AnimationImages.h"

UIImage *img1 = [[UIImage imageNamed:@"image1.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 150, 20, 150)];
UIImage *img2 = [[UIImage imageNamed:@"image2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 150, 20, 150)];

[self.imgView setAnimationImagesWithUIImageViewSize:[NSArray arrayWithObjects:img1, img2, nil]];

self.imgView.animationDuration = 1;

[self.imgView startAnimating];

このカテゴリ (UIImageView+AnimationImages)はここにあります。

于 2013-11-11T12:22:58.990 に答える