У меня есть в моем представлении два изображения и подключено к IBOutlet:
IBOutlet UIImageView *ship; // X/Y = 130/82, W/H = 61/50
IBOutlet UIImageView *planet;// X/Y = 87/173, W/H = 147/128
Все, что я пытаюсь сделать, это анимировать изображение моего корабля вдоль эллиптического пути (созданного с изображением планеты), для этого:
CAKeyframeAnimation *orbit = [CAKeyframeAnimation animation];
orbit.keyPath = @"position";
orbit.path = CFAutorelease(CGPathCreateWithEllipseInRect(planet.bounds, NULL));
orbit.duration = 4;
orbit.additive = YES;
orbit.repeatCount = HUGE_VALF;
orbit.calculationMode = kCAAnimationPaced;
orbit.rotationMode = kCAAnimationRotateAuto;
[ship.layer addAnimation:orbit forKey:@"orbit"];
Проблема с кодом заключается в том, что изображение моего корабля анимируется за пределами изображения моей планеты, чтобы решить эту проблему, я делаю это вручную, используя это:
CGRect boundingRect = CGRectMake(-100, 30, 200, 200);
orbit.path = CFAutorelease(CGPathCreateWithEllipseInRect(boundingRect, NULL));
Теперь зачем использовать X/Y = -100/30, если моя планета находится на X/Y = 130/82? Есть ли другой способ сделать это непосредственно по изображению (например, planet.layer.bounds или planet.frame)?