同时旋转和移动UIImageView

时间:2015-01-30 01:21:43

标签: objective-c animation uiimageview uiimage image-rotation

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

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

无论如何,这两种方法都可以完美地完成。但是当我一起使用它们时,事情就变得疯狂了!如果有人能帮助我弄清楚如何让这两种方法一起工作,那就太棒了。感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用连续的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;
}