具有多个 animationDuration iOS 的图像序列动画

Image sequence animation with multiple animationDuration iOS

我可以从具有 animationImagesstartAnimating 属性的 UIImaheView 中的数组加载一些 UIImage,具有固定的 animationDuration.

像这样:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.imageNamesArray = [[NSMutableArray alloc] initWithObjects:@"0001.png", @"0002.png", @"0003.png", @"0004.png", @"0005.png", @"0006.png", @"0007.png", @"0008.png", @"0009.png", @"0010.png", @"0011.png", @"0012.png", @"0013.png", @"0014.png", @"0015.png", @"0016.png", @"0017.png", @"0018.png", @"0019.png", @"0020.png", nil];


    self.imageArray = [[NSMutableArray alloc] init];

    for (int i = 0; i < [imageNamesArray count]; i++)
    {
        [imageArray addObject:[UIImage imageNamed:[imageNamesArray objectAtIndex:i]]];
    }

    self.imageView.animationImages = imageArray;
    self.imageView.animationDuration = 0.04;
    self.imageView.animationRepeatCount = 0;
    [imageView startAnimating];
}

但是,我想在同一个 UIImageView 中加载那些 UIImage 和不同的 animationDuration。让我解释一下我的意思。我有一个名为 imageNamesArray 的数组,其中包含 20 个不同的图像名称。现在,我想要另一个包含 20 个不同持续时间的数组。

self.durationArray = [[NSMutableArray alloc] initWithObjects:@"0.5", @"0.4",  @"0.4",  @"0.5",  @"0.4",  @"0.9",  @"0.4",  @"0.4",  @"0.4",  @"0.4",  @"0.4",  @"0.4",  @"0.4",  @"0.6",  @"0.4",  @"0.4",  @"0.8",  @"0.4",  @"0.4",  @"0.3",  @"0.4", nil];

我想根据 durationArray 的持续时间在 UIImageView 中显示 imageArray 中的每个图像。我该如何实施。我可以使用 NSTimer 来完成这项工作吗?如果有解决方案请与我分享。非常感谢。

试试这段代码,我刚刚写的,如果有错误请告诉我。

-(void)refreshTimer
{
    self.imageView.image = [UIImage imageNamed:[self.imageNamesArray objectAtIndex:count]];
    [self performSelector:@selector(refreshTimer) withObject:nil afterDelay:[[self.durationArray objectAtIndex:count] doubleValue]];
    count++;
}

这里的计数是一个整数。从您的 Viewdidload 调用此方法一次

[self refreshTimer];