У меня есть круг, который вращается вокруг центра моего взгляда. Он постоянно вращается на 360 градусов. Это прекрасно работает, используя мой следующий код:
-(void) rotateGear: (UIImageView*) view angle:(int)angle arc:(float)arc
{
float x1 = view.frame.origin.x + view.frame.size.width/2;
float y1 = view.frame.origin.y + view.frame.size.height/2;
float radius = sqrtf(powf(160.0f - x1 ,2.0f) + powf(240.0f - y1, 2.0f));
float x = 160.0f + radius * (cos(arc + M_PI + (angle * (M_PI / 180.0f))));
float y = 240.0f + radius * (sin(arc + M_PI + (angle * (M_PI / 180.0f))));
view.frame = CGRectMake(x - view.frame.size.width/2, y - view.frame.size.height/2, view.image.size.width, view.image.size.height);
}
Приведенный выше код вычисляет новую позицию на основе переданных параметров и перемещает изображение в новое местоположение, создавая впечатление, что оно движется в идеальном отношении к центру основного вида. Все отлично работает.
Однако я хочу, чтобы вид / сфера, которая вращается вокруг центра, также вращалась при вращении. В другом таймере я пытаюсь:
littleGear.transform =
CGAffineTransformRotate(CGAffineTransformIdentity, M_PI * (angle) / 180.0);
Все сходит с ума. Шар начинает переворачиваться, переворачиваться, складываться и изгибаться по всему экрану. Если я удаляю первый код, орбитальное вращение, оно работает нормально - оно отлично вращается на месте.
По сути, они оба работают нормально, пока не объединены, а затем все сводится с ума. Мое первое предположение состоит в том, что матрица заполняется всеми вращениями, но я не уверен, как ее решить. Есть идеи?