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