6

我需要在 UIScrollView 上将 zoomScale 设置回 1,但我需要对其进行动画处理。我以为我可以为此使用 CABasicAnimation,但 NSValue 似乎没有“valueForFloat”或“valueForNSNumber”,所以我不确定 CABasicAnimation 的 animation.fromValue 和 animation.toValue 使用什么。有没有更好的方法来解决这个问题?

编辑:我需要添加什么才能使其正常工作?

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"zoomScale"];
        animation.duration = 2.3;
        animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];        
        animation.fromValue = [NSNumber numberWithFloat:myScrollview.zoomScale];
        animation.toValue = [NSNumber numberWithFloat:1.0];

        [myScrollview.layer addAnimation:animation forKey:@"zoomScale"];
4

1 回答 1

14

你不需要求助于CAAnimation这个简单的东西,只需使用-[UIScrollView setZoomScale:animated:]传递YES作为第二个参数。

无论如何,如果您想修改动画的某些方面,您可以使用“UIView 动画”来代替,因为zoomScale它不是直接由CAAnimation.

您是否尝试过类似以下的方法?

[UIView animateWithDuration:2.0
                      delay:0
                    options:UIViewAnimationOptionBeginFromCurrentState
                 animations:^{ [myScrollView setZoomScale:1.0f animated:NO]; }
                 completion:nil];
于 2013-06-11T21:06:29.880 回答