gpt4 book ai didi

ios - 使用平移手势识别器获得平滑旋转

转载 作者:行者123 更新时间:2023-11-28 19:55:26 27 4
gpt4 key购买 nike

我正在通过从 UIPanGestureRecognizer 获取输入来围绕 y 轴旋转 CATransform3D 层:

CGPoint movement = [recognizer translationInView:self];
CGFloat trackSpread = self.bounds.size.width;
CGFloat angle = (35 * abs(movement.x))/trackSpread;
transform = CATransform3DRotate(transform, degToRad(angle), 0, 1, 0);

如果平移速度较慢,即从识别器接收连续的 x 值,则 View 会平滑旋转,但如果平移速度较快,即从识别器接收的值不连续,我会看到旋转中的跳跃(有点像层也在围绕它的旋转点平移一点)。无论平移是慢速还是快速,始终保持旋转平稳的方法是什么?

最佳答案

独立层具有隐式动画,只需更改属性即可自动发生。这就是你所看到的。当不断更新属性时,它看起来像图层滞后和落后。

如果您想在没有隐式动画的情况下更改属性,您可以在已禁用所有操作(动画的更通用名称)的事务中更改它:

[CATransaction begin];
[CATransaction setDisableActions:YES]; // no animations
myLayer.transform = newTransform;
[CATransaction commit];

您还可以通过将 NSNull 添加到该关键路径的 actions 字典中,将层配置为从不为给定的关键路径寻找动画:

myLayer.actions = @{
@"transform": [NSNull null] // never animate "transform"
};

关于ios - 使用平移手势识别器获得平滑旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827398/

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