如何停止 CATransform3DMakeScale 对比例更改进行动画处理



我在捏合手势期间使用CATransform3DMakeScale调用来调整 CALayer 的大小,但每个转换调用都会从原始比例动画到目标比例。

由于我将值从捏合手势比例传递到转换调用,因此手势比例值的更新速度比导致卡顿的变换动画更快。

- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {
    if ([gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        pinchScale = [gestureRecognizer scale];
        CALayer *layer = [self layer];
        /* During pinching, this gets called again during the animation 
        of the last transformation */
        layer.transform = CATransform3DMakeScale(pinchScale, pinchScale, 0);
    }
}

如何阻止CATransform3DMakeScale对变换进行动画处理?

您需要

禁用默认的CALayer动画机制添加此行

layer.actions = @{@"position": [NSNull null],@"frame":[NSNull null],@"bounds":[NSNull null]}; 

在这个CALayer *layer = [self layer];下面

或者您可以使用它获得相同的结果,这更好,因为仅为此更改禁用动画,然后启用动画,如@Duncan在他的评论中所说

[CATransaction begin];
[CATransaction setDisableActions:YES];
layer.transform = CATransform3DMakeScale(pinchScale, pinchScale, 0);
[CATransaction commit];

相关内容

  • 没有找到相关文章

最新更新