iPhone поможет с анимацией cgaffinetransform resetting?
Привет, я совершенно запутался с анимацией CGAffineTransform. Все, что я хочу сделать, это переместить спрайт из положения справа в положение слева. Когда он остановился, я хочу "сбросить" его, т. е. переместить его обратно туда, где он начался. Если приложение выходит (с многозадачностью), я хочу снова сбросить позицию при запуске и повторить анимацию.
Это то, что я использую для создания анимации.. [UIImageView animateWithDuration:1.5
delay:0.0
options:(UIViewAnimationOptionAllowUserInteraction |
UIViewAnimationOptionCurveLinear
)
animations:^(void){
ufo.transform = CGAffineTransformTranslate(ufo.transform, -270, 100);
}
completion:^(BOOL finished){
if(finished){
NSLog(@"ufo finished");
[self ufoAnimationDidStop];
}
}];
Как я понимаю, CGAffineTransforms просто визуально делает спрайт похоже, что он двигается, но на самом деле не двигается. Поэтому, когда я пытаюсь "сбросить" позицию, используя
НЛО.center = CGPointMake (355, 70);
Он ничего не делает.
У меня действительно что-то работает, если я позвоню
НЛО.transform = CGAffineTransformTranslate (ufo.transform, 270, -100);
Он сбрасывается. Проблема в том, что если я выхожу из приложения на полпути через анимацию, то когда она перезапускается, она не обязательно начинается с самого начала, и она не идет правильное место, это в основном сходит с ума!
Есть ли способ просто удалить любые преобразования, применяемые к нему? Я рассматриваю возможность просто использовать таймер, но это кажется глупым, когда этот метод должен работать. Я боролся с этим в течение некоторого времени, так что любая помощь была бы очень признательна.Спасибо
1 ответ:
Применение преобразования к виду фактически не изменяет центр или границы вида; оно просто изменяет способ отображения вида на экране. Вы хотите установить преобразование обратно в CGAffineTransformIdentity, чтобы оно выглядело как "нормальное."Вы можете установить его на это, прежде чем начать анимацию и установить его на то, что вы хотите, чтобы он анимировался.