UIView动画块不会动画视图的子视图

4
我无法通过下面的代码实现任何动画效果:
if (self.segmentControl.selectedSegmentIndex == 0) {
    [UIView transitionFromView:tableView
                        toView:mapView
                      duration:1.0
                       options:UIViewAnimationTransitionFlipFromLeft
                    completion:nil
         ];
    }
if (self.segmentControl.selectedSegmentIndex == 1) {
    [UIView transitionFromView:mapView
                        toView:tableView
                      duration:1.0
                       options:UIViewAnimationTransitionFlipFromRight
                    completion:nil
         ];
}

视图正在交换,但没有任何动画。这很奇怪。我也尝试将mapViewtableViewself.view.subviews交换,如下所示(objectAtIndex:0是一个toolBar):
if (self.segmentControl.selectedSegmentIndex == 0) {
    [UIView transitionFromView:[self.view.subviews objectAtIndex:1]
                        toView:[self.view.subviews objectAtIndex:2]
                      duration:1.0
                       options:UIViewAnimationTransitionFlipFromLeft
                    completion:nil
         ];
    }
if (self.segmentControl.selectedSegmentIndex == 1) {
    [UIView transitionFromView:[self.view.subviews objectAtIndex:2]
                        toView:[self.view.subviews objectAtIndex:1]
                      duration:1.0
                       options:UIViewAnimationTransitionFlipFromRight
                    completion:nil
         ];
}
1个回答

17
您使用了错误的选项。使用此方法时,您应该使用 常量UIViewAnimationOptionTransitionFlipFromLeft…Right

旧的常量UIViewAnimationTransitionFlipFromLeft…Right只适用于非基于块(block)的+setAnimationTransition:…方法。这些常量分别具有值1和2,而我上面提到的常量具有值1<<20和2<<20,完全不同。

@加拿大:这不是Xcode的错误,而是C标准(gcc)没有防止不同enum常量混合的问题。 - kennytm
是的,抱歉,我仔细看了一下这个类,发现了编译器的东西。谢谢 :) - runmad
这个问题困扰我很久了,感谢你的耐心检查和帮助 :D - Ben Scheirman
先生,您真是太棒了。我卡在那个问题上好几个小时了!虽然只有微小的差别,但现在一切都正常了。非常感谢您! :D - Simon Germain
我希望我能给它更多的赞! - Peter Sarnowski
显示剩余2条评论

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