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

4

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

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

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

不建议在iOS 4及更高版本中使用此部分中的方法。请改用基于块的动画方法。

遵循这个建议,我尝试使用以下代码:
[UIView transitionFromView: self.subViewFront
                    toView: self.subViewBack
                  duration: 1.0
                   options: UIViewAnimationOptionTransitionFlipFromTop
                completion: nil];

看起来这段代码应该和我原来编写的代码做的是一样的事情,但是当我用这段代码运行我的应用程序时,它会翻转整个视图(父视图和子视图),而不仅仅是子视图。这个方法应该作为我使用的原始方法的替代品吗?还是我漏掉了什么?谢谢。

1个回答

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];

1
真遗憾,看起来创建无用的容器来完成类似于旧的弃用方法调用的工作是一种浪费。 - 5StringRyan

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