Вращение двух UIImageViews около одной точки

#ios #objective-c #uiview #uiimageview

#iOS #objective-c #uiview #uiimageview

Вопрос:

Я работаю над своим первым приложением для iOS и хотел бы повернуть два UIImageViews A и B относительно точки X между ними.

  ------- 
|       |
|   A   |
|       |
|       |
 ------- 
   [X]
 ------- 
|       |
|   B   |
|       |
|       |
 ------- 
  

До сих пор я пытался создать UIView (называемый twoShipView ниже) и поместить в него два ImageViews и применить анимацию к этому UIView следующим образом:

 - (void)spinShipsWithOptions:(UIViewAnimationOptions)options {

    [UIView animateWithDuration:5.0f
                      delay:0.0f
                    options:options
                 animations:^{
                     self.twoShipView.transform = CGAffineTransformRotate(self.twoShipView.transform, M_PI / 2);
                 }
                 completion:^(BOOL finished) {
                     if (finished) {
                         if (self.isAnimatingShips) {
                             [self spinShipsWithOptions:UIViewAnimationOptionCurveLinear];
                         } else if (options != UIViewAnimationOptionCurveEaseOut) {
                             [self spinShipsWithOptions:UIViewAnimationOptionCurveEaseOut];
                         }
                     }
                 }
    ];
}
  

Ожидаемый результат: сам вид будет вращаться анимированным образом вокруг своего центра. ImageViews — это корабли, и я хотел бы иметь возможность вставлять другие изображения и манипулировать ими внутри системы координат этого вида, поэтому я хотел бы просто повернуть View, а ImageViews просто соответствовать тому, что делает View.

Фактический результат: само представление не вращается. Два ImageViews выполняют, и поскольку вид представляет собой прямоугольник, ориентированный в портретной ориентации, поворот отсекает другой ImageView. Анимация также не выполняется.

Есть ли что-то очевидное, чего я не понимаю?

Большое спасибо! Иэн

Комментарии:

1. Я попробовал ваш код, и внешний вид, содержащий два вида изображений, действительно повернулся. Если self. isAnimatingShips оценивается как «ДА», затем я получил непрерывное вращение.

Ответ №1:

Похоже, я по ошибке вызывал начальную анимацию в viewDidLoad вместо viewDidAppear. Всем спасибо за уделенное время.