如何通过翻转和缩放实现iPhone视图过渡动画?

时间:2009-11-18 11:51:43

标签: iphone view core-animation transition

如何实现我们在iPhone音乐应用程序的封面屏幕中看到的动画?当您点击一个小视图时,它会翻转并缩放到另一个视图?我怎样才能做到这一点?我可以使用核心动画来翻转和缩放视图,但是如何转换到另一个视图呢?感谢

2 个答案:

答案 0 :(得分:14)

您需要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];
}

答案 1 :(得分:0)

我正在尝试你正在做的确切代码 - 我得到一个缩放效果,但没有翻身。唯一的区别是,在turnUp代码之前,我添加了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];

..这将删除我刚刚添加的视图。

我不确定这是否是提出此问题的正确位置 - 对不起,如果不是!