我正在使用[UIView animateWithDuration:...]
来查看UIImageView
次观看的动画序列。像这样:
[UIView animateWithDuration:1.0 animations:^{
imageView.frame = newImageRectPosition;
}completion:^(BOOL finished){
//animate next UIImageView
}];
我需要动画'下一个UIImageView'才能完成。我需要在上一个动画的中间动画“下一个UIImageView”,而不是在完成时。是否可以这样做?
答案 0 :(得分:2)
你可以设置两个UIView动画块,其中一个延迟是第一个动画持续时间的一半:
[UIView animateWithDuration:1.0
animations:^{ ... }
completion:^(BOOL finished){ ... }
];
[UIView animateWithDuration:1.0
delay:0.5
options:UIViewAnimationCurveLinear
animations:^{ ... }
completion:^(BOOL finished) { ... }
];
答案 1 :(得分:0)
您可以使用许多选项来达到您想要的效果。我想到的是使用计时器。
使用NSTimer,其射击间隔是动画的一半,然后让计时器触发另一个动画。只要这两个动画不会相互干扰,你就可以了。
一个例子如下:
NSTimer* timer;
// Modify to your uses if so required (i.e. repeating, more than 2 animations etc...)
timer = [NSTimer scheduledTimerWithTimeInterval:animationTime/2 target:self selector:@selector(runAnimation) userInfo:nil repeats:NO];
[UIView animateWithDuration:animationTime animations:^{
imageView.frame = newImageRectPosition;
} completion:nil];
- (void)runAnimation
{
// 2nd animation required
[UIView animateWithDuration:animationTime animations:^{
imageView.frame = newImageRectPosition;
} completion:nil];
}
使用计时器,如果您需要执行两个以上的动画,这可以放大,如果您需要稍后更改动画时间,它们会保持在一起。