5

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

4

2 回答 2

14

您需要UIView两个 s (前端/后端)的 as Container ,UIView然后将它们作为子视图从容器中删除/添加到容器中,同时在两者之间执行动画:

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];
}
于 2009-11-18T12:20:05.347 回答
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];

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

我不确定这是否是提出这个问题的正确位置——如果不是,抱歉!

于 2010-07-13T08:12:10.337 回答