UIImage / UIView动画图像循环过快,需要减慢速度

时间:2014-05-29 17:11:06

标签: ios xcode

我的应用程序中有一个图像幻灯片动画,但作为标准,它似乎快得可笑,我不确定为什么这是默认速度。但无论如何我需要一种减慢速度的方法。动画本身的速度很好,但每张图片都不会在屏幕上停留足够长的时间!任何帮助非常感谢。谢谢

- (void)animateImages
{
static int count = 0;
NSArray *animationImages =@[[UIImage imageNamed:@"blur_edges.png"],
                            [UIImage imageNamed:@"blur_edges2.png"],
                            [UIImage imageNamed:@"blur_edges3.png"],
                            [UIImage imageNamed:@"blur_edges4.png"],
                            [UIImage imageNamed:@"slide8.png"]];
UIImage *image =
[animationImages objectAtIndex:(count % [animationImages count])];
[UIView transitionWithView:_imView
                  duration:1.5
                options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    _imView.image = image;
                } completion:^(BOOL finished) {
                    [self animateImages];
                    count++;
                }];
}

2 个答案:

答案 0 :(得分:0)

将持续时间从1.5以上增加到完美的匹配速度。

答案 1 :(得分:0)

我会这样做:

@interface MyObject : NSObject
{
    UIImageView * _imView ;
}
@end

@implementation MyObject

const NSTimeInterval kTimeBetweenSlides = 3.0 ;

-(void)nextImageTimerFired:(NSTimer*)timer
{
    NSEnumerator * enumerator = [ timer userInfo ] ;
    [ self nextImage:enumerator ] ;
}

-(void)nextImage:(NSEnumerator*)enumerator
{
    UIImage * nextImage = [ enumerator nextObject ] ;
    if ( nextImage != nil )
    {
        [UIView transitionWithView:_imView duration:1.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
            _imView.image = nextImage;
        } completion:nil ];
        [ NSTimer scheduledTimerWithTimeInterval:kTimeBetweenSlides target:self selector:@selector( nextImageTimerFired: ) userInfo:enumerator repeats:NO ] ;
    }
}

-(void)animateImages
{
    NSArray * images = @[
                 [UIImage imageNamed:@"blur_edges.png"],
                 [UIImage imageNamed:@"blur_edges2.png"],
                 [UIImage imageNamed:@"blur_edges3.png"],
                 [UIImage imageNamed:@"blur_edges4.png"],
                 [UIImage imageNamed:@"slide8.png"]
                 ] ;

    NSEnumerator * enumerator = [ images objectEnumerator ] ;
    [ self nextImage:enumerator ] ;
}

@end

这将创建一个可用于遍历图像数组的枚举器。我们通过调用 -nextImage:开始这个过程。这将从枚举器中提取下一个图像,然后安排计时器在延迟后调用我们。计时器处理程序再次调用 -nextImage:以显示下一个图像。重复该过程,直到枚举器为空。

您甚至可以使用图像名称数组而不是图像对象,具体取决于图像的大小。