簡體   English   中英

使用平移手勢識別器平穩旋轉

[英]Getting a smooth rotation using pan gesture recognizer

我通過從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值),則視圖平滑旋轉,但是如果平移速度較快(即從識別器接收到的值不連續),我會看到旋轉跳躍(類似該層也在平移圍繞它的旋轉點)。 無論緩慢還是快速平移,始終保持旋轉平穩的方式是什么?

獨立圖層具有隱式動畫,這些動畫僅通過更改屬性即可自動發生。 這就是您所看到的。 當不斷更新屬性時,該圖層看起來像是滯后和落后。

如果要更改屬性而不使用隱式動畫,則可以在已禁用所有動作(動畫的更通用名稱)的事務中更改屬性:

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

您還可以通過將NSNull添加到該鍵路徑的actions字典中,將圖層配置為從不尋找給定鍵路徑的動畫:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM