我想创建一个旋转按钮,可以从我给定的点旋转 我尝试了这个,但它给角度,我想给点
self.theImageView.transform=CGAffineTransformMakeRotation (angle);
angle=30;
我也尝试了这个,但它有同样的问题
CABasicAnimation *halfTurn;
halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
halfTurn.fromValue = [NSNumber numberWithFloat:0];
halfTurn.toValue = [NSNumber numberWithFloat:((90*M_PI)/360)];
halfTurn.duration = 1;
halfTurn.repeatCount = false;
[[button layer] addAnimation:halfTurn forKey:@"180"];
任何人都可以建议或者给出代码最快的代码 提前谢谢
答案 0 :(得分:0)
如果您想要提供两个点并围绕这两个点旋转视图,则有一个问题。你必须确保这两个点与旋转锚点等距。您可以计算这种旋转的弧角并相应地进行设置。
你可以在这里找到弧的长度: http://math.about.com/od/formulas/ss/surfaceareavol_9.htm
您可以在此链接中找到查找弧角的公式:http://www.regentsprep.org/Regents/math/algtrig/ATM1/arclengthlesson.htm
修改强>
我现在给出一个前提,即在锚点周围有7个按钮循环排列。你现在所做的是维护一个名为currentAngle
的实例级变量并将其初始化为0。
CGFloat nextAngle = currentAngle + (360/7);
CABasicAnimation *halfTurn;
halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
halfTurn.fromValue = [NSNumber numberWithFloat:((currentAngle*M_PI)/360)];
halfTurn.toValue = [NSNumber numberWithFloat:((nextAngle*M_PI)/360)];
halfTurn.duration = 1;
halfTurn.repeatCount = false;
[[button layer] addAnimation:halfTurn forKey:@"clock_wise_rotation"];
currentAngle = nextAngle;
以上代码仅适用于顺时针旋转。如果要执行逆时针动画,则必须减去360/7并执行动画。