2

我有一个图像视图,我在屏幕上非常缓慢地制作动画,重复使用如下块动画:

[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];
}

..但它似乎根本没有做任何事情?任何帮助表示赞赏。

4

2 回答 2

0

如果你想要一个缓慢滚动的视图,用户也可以用手指滚动,我建议使用 UIScrollView。您可以使用 NSTimer 不断更新滚动视图的内容偏移量。当用户开始滚动时,您只需停用此计时器,让他随心所欲地滚动。一旦他让我们走并且滚动视图停止减速(您的代表将收到通知),您可以再次开始自己移动它。

于 2012-07-04T20:33:35.083 回答
-1

如果您希望旋转手势像转动转盘一样加快或减慢动画速度,请尝试以下操作:

在视图的图层上设置速度属性。

大多数 UIView 动画最终都会将 CAAnimation 添加到视图的图层对象,因此应该可以。像这样的东西:

pattern.layer.speed = .5 //将动画减慢到半速

值为 2 将完全停止动画。值为 2 将使其以双倍速度运行。

于 2012-07-05T21:18:51.880 回答