Как реализовать анимацию перехода просмотра iPhone с переворачиванием и масштабированием? - PullRequest
5 голосов
/ 18 ноября 2009

как мне реализовать анимацию, которую мы видим на экране обложки приложения iPhone Music? когда вы нажимаете на маленькое представление, оно переворачивается и масштабируется до другого представления? как я могу это сделать? Я могу использовать базовую анимацию, чтобы перевернуть и масштабировать вид, но как я могу сделать переход к другому виду? спасибо

Ответы [ 2 ]

14 голосов
/ 18 ноября 2009

Вам понадобится UIView в качестве контейнера для двух UIView s (передняя сторона / задняя сторона), а затем удалите / добавьте их из / в контейнер в качестве подпредставлений при выполнении анимации между:

UIView *flipContainer;
UIView *frontSide;
UIView *backSide;
  //...
-(void)turnUp
{
  [backSide removeFromSuperview];
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:flipContainer cache:YES];
  [UIView setAnimationDuration:1.0];
  CGAffineTransform transform = CGAffineTransformMakeScale(1.2, 1.2);
  flipContainer.transform = transform;
  [UIView commitAnimations];
  [flipContainer addSubview:frontSide];
}
-(void)turnDown
{
  [frontSide removeFromSuperview];
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:flipContainer cache:YES];
  [UIView setAnimationDuration:1.0];
  CGAffineTransform transform = CGAffineTransformMakeScale(1, 1);
  flipContainer.transform = transform;
  [UIView commitAnimations];
  [flipContainer addSubview:backSide];
}
0 голосов
/ 13 июля 2010

Я пробую точный код, который вы делаете - я получаю эффект масштабирования, но не переворачиваюсь. Разница лишь в том, что перед кодом включения я добавляю flipContainer (с обратным отображением), чтобы его можно было перевернуть.

// construct animation container
self.flipContainer = [[FlipContainer alloc] init];
[self.flipContainer.view setFrame:CGRectMake(clickedSquareX, clickedSquareY, 200, 200)];
[self.flipContainer.view addSubview:self.backside.view];
// add animation container
[self.myParentView.view addSubview:self.flipContainer.view];
// PROCEED to your turnUp code

Причина, по которой я это делаю, заключается в том, что у меня есть куча изображений в горизонтальном UIScrollView, и поэтому для «имитации» переворачивания и масштабирования изображения 200x200, чтобы показать детализацию, я добавляю свой flipContainer с обратной стороной, показывающей точное изображение поверх точное место спрессованного изображения. Это должно работать, не так ли? Меня немного смущает первая строка вашего кода включения:

[backSide removeFromSuperview];

.. что бы удалить вид, который я только что добавил.

Я не уверен, что это правильное место, чтобы задать этот вопрос - извините, если это не так!

...