[UIView transitionWithView ...]和[UIView transitionFromView ...]之间的区别

时间:2011-11-20 22:19:55

标签: objective-c uiview ios5 uiviewanimation

我目前有一个包含在视图中的视图。主视图控制器(父视图)具有在接口构建器中连接到子视图的属性。子视图包含一个按钮。我想按钮翻转子视图,同时保持主视图静止。我目前在IBAction中有以下代码用于按钮:

[UIView transitionWithView: self.subViewFront
                  duration: 1.0
                   options: UIViewAnimationOptionTransitionFlipFromTop
                animations: nil
                completion: nil];
[UIView commitAnimations];
[[self view] addSubview: self.subViewBack;

这段代码效果很好,但是在查看Apple的API参考时我注意到了以下内容:

  

在iOS 4及更高版本中不鼓励使用本节中的方法。   改为使用基于块的动画方法。

遵循此建议我尝试使用以下代码:

[UIView transitionFromView: self.subViewFront
                    toView: self.subViewBack
                  duration: 1.0
                   options: UIViewAnimationOptionTransitionFlipFromTop
                completion: nil];

看起来它应该与我最初编码的相同,但是,当我使用此代码运行我的应用程序时,它会翻转我的整个视图(父视图和子视图)而不仅仅是子视图。这种方法应该用作我用过的原始方法的替代品,还是我缺少的东西?感谢。

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题(相反,父级动画制作了动画),但通过将两个视图(subViewFrontsubViewBack)添加到容器视图来解决它。

因此,请将您的两个视图添加到容器UIView,然后使用-transitionFromView:...,就像您的示例所示:

UIView *container = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];
[self.view addSubview:container];

...

[container addSubview:self.subViewFront];
[container addSubview:self.subViewBack];