作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在捏合手势期间使用 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/
我是一名优秀的程序员,十分优秀!