同时旋转和移动 UIImageView



阅读有关此主题的其他问题,但它们没有多大帮助。我正在尝试用这个移动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);
}

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

无论如何,这两种方法本身都可以正常工作。但是当我将它们一起使用时,事情就会变得疯狂!如果有人能帮助我弄清楚如何让这两种方法一起工作,那就太好了。谢谢。

您可以使用连续的 CGAffineTransforms 一起进行平移和旋转。

- (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;
}

最新更新