阅读有关此主题的其他问题,但这些问题并没有多大帮助。我试图用这个移动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);
}
我正在进行旋转和轨道运动"动画"喜欢这个,而不是实际的动画,因为我有更多的控制,因为我可以在我希望它进入下一个"帧"时调用该函数。
无论如何,这两种方法都可以完美地完成。但是当我一起使用它们时,事情就变得疯狂了!如果有人能帮助我弄清楚如何让这两种方法一起工作,那就太棒了。感谢。
答案 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;
}