#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. Всем спасибо за уделенное время.