我有一个图像视图,我在屏幕上非常慢动画,重复一遍,使用块动画,如下所示:
[UIView animateWithDuration:100.0f
delay:0.0f
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat
animations:^(void) {
pattern.frame = CGRectMake(0-(pattern.frame.size.width/2), 0, pattern.frame.size.width, pattern.frame.size.height);
}
completion:NULL];
基本上,图像是屏幕宽度的两倍,当它重复时,它看起来像是连续循环。
这一切都很好,但我想做的是根据旋转触摸手势加快或减慢滚动速度。我有一个手势识别器设置等,但我可以改变当前动画加快速度吗?
如果没有,我可以取消当前正在运行的那个并用另一个更短/更长持续时间的动画替换它吗?
顺便说一句,我尝试在手势识别器中使用完全相同的动画块,例如:
-(void)rotatedSpinner:(UIRotationGestureRecognizer *)gestureRecognizer{
CGFloat rotation = gestureRecognizer.rotation;
[UIView animateWithDuration:100-(rotation*10)
delay:0.0f
options:UIViewAnimationOptionBeginFromCurrentState
animations:^(void) {
pattern.frame = CGRectMake(0-(pattern.frame.size.width/2), 0, pattern.frame.size.width, pattern.frame.size.height);
}
completion:NULL];
}
..但似乎根本没有做任何事情? 任何帮助表示赞赏。
答案 0 :(得分:0)
如果您想要一个缓慢滚动的视图,用户也可以用手指滚动,我建议使用UIScrollView。您可以使用NSTimer不断更新滚动视图的内容偏移量。当用户开始滚动时,您只需停用此计时器,让他按需要滚动。一旦他离开并且滚动视图停止减速(您的代表将被通知),您可以再次开始自己移动。
答案 1 :(得分:0)
如果您想要旋转手势来加快或减慢动画,例如转动拨号,请尝试以下操作:
在视图的图层上设置speed属性。
大多数UIView动画最终会在视图的图层对象中添加CAAnimation,因此应该可以使用。像这样:
pattern.layer.speed = .5 //将动画降低到半速
值为2将完全停止动画。值为2将使其以双倍速度运行。