我想让用户旋转我的一个视图。当我按代码进行轮转时,这段代码看起来最好:
#define D2R(x) (x * (M_PI/180.0))
myLayer.transform = makePerspectiveTransform();
myLayer.transform = CATransform3DRotate(topPart.transform, D2R(65), 1, 0, 0);
CATransform3D makePerspectiveTransform()
{
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / 800;
return transform;
}但是我希望用户能够控制转换(其中最大值是D2R(65) )。
我怎么能这么做?
更新
这是pan识别码:
- (void)rotate:(UIPanGestureRecognizer*)gesture
{
CGPoint velocity = [gesture velocityInView:self.view];
if (velocity.x > 0 && degree < 45) {
degree += 1;
myLayer.transform = CATransform3DRotate(myLayer.transform, D2R(2/degree), 1, 0, 0);
}
}发布于 2014-02-01 13:34:59
您的代码既增加了添加到转换中的旋转量,又将旋转应用于已经旋转的视图转换。所以每次它从它停止的地方开始,移动得更多。
不要将旋转应用于现有的转换。开始动画时,将起始转换保存到实例变量中。然后将从pan手势计算出来的旋转值应用到原始转换中,并将其保存为视图的转换。
https://stackoverflow.com/questions/21398824
复制相似问题