2

好吧,我有一个 UIImageView,我想通过“animationImages”为其图像设置动画,如您在此处看到的:

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];

这两个图像的宽度小于 UIImageView 的宽度,所以我希望在动画显示它们时调整这些图像的大小。然而,动画不会使用“resizableImageWithCapInsets”进行任何调整,只是缩放它们以填充 UIImageView 的框架。

有什么想法吗?我该怎么做?

谢谢!!

4

1 回答 1

1

好吧,我找到的解决方案是在开始动画之前必须调整数组的所有 UIImages 的大小。因此,我使用类似于 setter“setAnimationImages”的过程创建了此类 UIImageView,但在其中所有 UIImage 都由 UIImageView 框架调整大小。UIImageView 的“ContentMode”属性也设置为“UIViewContentModeScaleToFill”。

最后,非常重要的一点是,每个 UIImage 之前都设置了“resizableImageWithCapInsets”,以知道如何调整每个 UIImage 的大小。

例子:

#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 回答