Я прочитал следующее из One step affine transform for rotation around a point?:Как я могу надежно поворачивать изображение вокруг точки?
CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y);
transform = CGAffineTransformRotate(transform, a);
transform = CGAffineTransformTranslate(transform,-x,-y);
Однако, когда я делаю это образы трансформируются все над картой, и редко по всему экрану.
Я пробовал немного, чтобы создать систему, в которой будут размещены изображения; если вы запустите цикл и поместите несколько значений, появится спираль. Однако, хотя я мог бы, в конечном счете, распутать связь между поворотом изображений и точками, которые я хотел, чтобы они вращались, я хотел попросить лучшее решение для «У меня есть изображение здесь, я считаю этот момент его центр, я хочу, чтобы он вращался по этой величине вокруг своего центра, но не был перемещен иным образом ».
Я пытаюсь сделать модифицированный порт http://JonathansCorner.com/ancient-clock/, и сейчас я пытаюсь поместить часовую стрелку. Все попытки сделать песню и танцевать выше, и перевести ее так, чтобы ее центр находился в желаемом центре, потерпел неудачу.
Как, для рук этих часов, могу ли я сказать «Я хочу руки в следующих поворотах» и разместить их по центру вокруг центра?
--EDIT--
Решающая часть этого кода, редактируемого в попытке использовать слои в ответ на замечание, является:
UIImage *hourHandImage = [UIImage imageNamed:@"hour-hand.png"];
UIImageView *hourHandView = [[UIImageView alloc] initWithImage:hourHandImage];
float hourRotation = .5;
hourHandImage = [UIImage imageNamed:@"hour-hand.png"];
hourHandView = [[UIImageView alloc] initWithImage:hourHandImage];
CGAffineTransform transform = CGAffineTransformMakeTranslation(centerX - 21, -centerY - 121);
// transform = CGAffineTransformRotate(transform, hourRotation);
// transform = CGAffineTransformTranslate(transform, 2 * centerX, 2 * centerY);
hourHandView.transform = transform;
hourHandView.layer.anchorPoint = CGPointMake(centerX, centerY);
hourHandView.layer.affineTransform = CGAffineTransformRotate(transform, hourRotation);
[self.view addSubview:hourHandView];
Спасибо,
- EDIT--
Теперь у меня есть что-то повальное; если следовать некоторым инструкции, у меня есть:
CGAffineTransform transform = CGAffineTransformMakeTranslation(100 -21, 100 -121);
transform = CGAffineTransformRotate(transform, hour/12.0 * M_PI * 2.0);
transform = CGAffineTransformTranslate(transform, -330, 330);
hourHandView.transform = transform;
Я хотел бы работать на том, чтобы эти цифры, но это имеет час 9:00 правильно отображаются.
Спасибо за вашу помощь!
У вас есть несколько примеров изображений вы можете отправлять сообщения? Что вы используете как 'x' и' y' здесь? Они должны быть соответственно половиной ширины и высоты ограничивающего прямоугольника того, что вы пытаетесь вращать. –
Кроме того, что такое 'a'? Обратите внимание, что это должно быть выражено в радианах, а не в градусах. –
Все геометрические манипуляции с точки зрения происходит вокруг точки привязки. Например, если anchorPoint = {0.5,0.5} (в центре), представление вращается, как если бы была ось z прямо через центр. Часовые стрелки вращаются почти вокруг наконечника, поэтому вам нужно что-то вроде hourHand.layer.anchorPoint = CGPointMake (0.5f, 0.9f); – Jano