我的应用程序中有一个图像幻灯片动画,但作为标准,它似乎快得可笑,我不确定为什么这是默认速度。但无论如何我需要一种减慢速度的方法。动画本身的速度很好,但每张图片都不会在屏幕上停留足够长的时间!任何帮助非常感谢。谢谢
- (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++;
}];
}
答案 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:以显示下一个图像。重复该过程,直到枚举器为空。
您甚至可以使用图像名称数组而不是图像对象,具体取决于图像的大小。