如何实现我们在iPhone音乐应用程序的封面屏幕中看到的动画?当您点击一个小视图时,它会翻转并缩放到另一个视图?我怎样才能做到这一点?我可以使用核心动画来翻转和缩放视图,但是如何转换到另一个视图呢?感谢
答案 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];
..这将删除我刚刚添加的视图。
我不确定这是否是提出此问题的正确位置 - 对不起,如果不是!