如何实现 iPhone 视图转场动画同时具有翻转和缩放效果?

5

我该如何实现iPhone音乐应用程序中CoverFlow屏幕上所看到的动画效果?当您点击小视图时,它会翻转并缩放到另一个视图?我可以使用核心动画来翻转和缩放视图,但如何进行到另一个视图的过渡呢?谢谢。


请查看此答案:https://dev59.com/lVXTa4cB1Zd3GeqP48rB#8931492 - aoakenfo
我在这里回答了一个类似的问题(带有代码):https://dev59.com/uXfZa4cB1Zd3GeqPTZUe - Former Gaucho
2个回答

14
你需要一个 UIView 作为容器,来容纳两个 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];
}

哈!你两次调用了 +[UIView setAnimationDuration:] - Jacob Relkin

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,并在被按下的图片的确切位置上显示背面的图像。这应该有效果,对吗?让我有点困惑的是你的turnUp代码的第一行:

[backSide removeFromSuperview];

这会删除我刚添加的视图。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接