【问题标题】:The differences between [UIView transitionWithView...] and [UIView transitionFromView...][UIView transitionWithView...] 和 [UIView transitionFromView...] 的区别
【发布时间】:2011-11-20 22:19:55
【问题描述】:

我目前有一个包含在视图中的视图。主视图控制器(父视图)具有在界面构建器中连接到子视图的属性。子视图包含一个按钮。我希望按钮在保持主视图静止的同时翻转子视图。我目前在按钮的 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];

看起来它应该和我最初编写的代码一样,但是,当我使用这段代码运行我的应用程序时,它会翻转我的整个视图(父视图和子视图),而不仅仅是子视图。是否应该将此方法用作我使用的原始方法的替代方法,还是我缺少某些东西?谢谢。

【问题讨论】:

    标签: objective-c uiview ios5 uiviewanimation


    【解决方案1】:

    我也遇到了同样的问题(父级被动画化了),但通过将两个视图(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];
    

    【讨论】:

    • 真是太可惜了,创建无用的容器来执行与旧的已弃用方法调用类似的工作似乎是一种浪费。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多