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