同时旋转和移动 UIImageView

Rotate and move UIImageView at the same time

阅读有关此主题的其他问题,但没有多大帮助。我正在尝试用这个移动 UIImageView...我希望它围绕一个点运行:

- (void)orbit {
    orbitAngle -= orbitSpeed;
    float x = stillObject.frame.origin.x + orbitRadius * cos(orbitAngle * M_PI / 180);
    float y = stillObject.frame.origin.y - orbitRadius * sin(orbitAngle * M_PI / 180);
    CGRect oldFrame = orbitingObject.frame;
    CGRect newFrame = CGRectMake(x, y, oldFrame.size.width, oldFrame.size.height);
    [orbitingObject setFrame:newFrame];
}

我将 UIImageView 旋转为:

- (void)rotate {
    orbitingObject.transform = CGAffineTransformMakeRotation(rotateDegree * M_PI / 180);
}

我正在像这样进行旋转和环绕 "animations" 而不是实际的动画,因为我有更多的控制权,因为我可以在我希望它前进到下一个时调用该函数 "frame" .

无论如何,这两种方法单独使用都非常好。但是当我一起使用它们时,事情就变得疯狂了!如果有人能帮我弄清楚如何让这两种方法协同工作,那就太好了。谢谢

您可以使用连续的 CGAffineTransformations 同时进行平移和旋转。

- (void)transformImageView {
    CGAffineTransform transform = CGAffineTransformIdentity;

    float translateX =  orbitRadius * cos(orbitAngle * M_PI / 180);
    float translateY =  orbitRadius * sin(orbitAngle * M_PI / 180);

    CGAffineTransformTranslate(transform, translateX, translateY);

    CGAffineTransformRotate(transform, rotateDegree * M_PI / 180);

    orbitObject.transform = transform;
}