将按钮或图像从一个点旋转到另一个点

时间:2014-09-01 10:40:08

标签: ios animation rotation points image-rotation

我想创建一个旋转按钮,可以从我给定的点旋转 我尝试了这个,但它给角度,我想给点

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"];

任何人都可以建议或者给出代码最快的代码 提前谢谢

1 个答案:

答案 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并执行动画。