gpt4 book ai didi

ios - 如何停止 CATransform3DMakeScale 动画缩放变化?

转载 作者:行者123 更新时间:2023-11-29 00:04:24 25 4
gpt4 key购买 nike

我在捏合手势期间使用 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];

关于ios - 如何停止 CATransform3DMakeScale 动画缩放变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com