Так что мне нужно было создать простую анимацию, где вид вылетает с экрана, а затем снова возвращается обратно на основе жестов пользователя. Мой код анимации (ниже) работает очень хорошо. На самом деле это работает слишком хорошо. Обратите внимание, как в методе enterStage я не изменяю вид. Я просто установил его шкалу в 1. Вид влетает и заканчивается в исходном положении. Если я делаю CGAffineTransformMakeTranslation и не делаю масштаб, он также отлично работает. Я ожидал, что мне нужно будет следить за оригинальным размером и позицией, но похоже, что это было несколько запутанно для меня.UIView animateWithDuration возвращается в исходное состояние
Это загадочно.
Где хранятся данные о первоначальном размере и местоположении? Как я могу отключить это поведение, если захочу - как если бы я хотел, чтобы представление не запоминало его первоначальную позицию?
-(void) exitStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
CGAffineTransform t = CGAffineTransformMakeTranslation(0, -1000);
self.transform = CGAffineTransformScale (t, 10.0, 10.0);
}
completion:^(BOOL finished){
}];
}
-(void) enterStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
//self.transform = CGAffineTransformMakeTranslation(0, self.originalYcoord);
self.transform = CGAffineTransformMakeScale(1,1);
}
completion:^(BOOL finished){
}];
}
+1, да, это одно. – 2013-03-28 15:42:10
... но затем, где хранится информация? Рамка UIView остается неизменной и не изменена ли она преобразованием? Я этого не проверял. – NFG
Информация хранится в свойстве transform, когда ОС идет, чтобы нарисовать объект, он применяет преобразование к тому, что ему нужно для рисования –