我的CAAnimation有什么问题吗?

时间:2011-08-10 13:04:41

标签: iphone objective-c animation

代码:

UIView *superView = [self.view superview];
CATransition *animation = [CATransition animation];
animation.duration = 0.5f;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.fillMode = kCAFillModeForwards;
animation.type = kCATransitionFade;
animation.subtype = kCATransitionFromTop;
[root.view removeFromSuperview];
[self.view removeFromSuperview];
[superView.layer addAnimation:animation forKey:@"removeContentAnimation"];

self.view和root.view被添加到“superView”

当我提交此动画时,发生错误的可能性很小 - 两个视图都从superView中删除并立即返回。在这快速变化之后,它正常消失。

1 个答案:

答案 0 :(得分:0)

看看这个doku:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html#//apple_ref/doc/uid/TP40009503-CH6-SW1

  1. 您无法为removeFromSuperView设置动画。
  2. 您应该使用块来为视图设置动画
  3. 这是一个简短的提示:

    - (IBAction)hideView:(id)sender
    {
        [UIView animateWithDuration:1.0
            delay: 0.0
            options: UIViewAnimationOptionCurveEaseIn
            animations:^{
                 viewToHide.alpha = 0.0;
            }
            completion:^(BOOL finished){
                [viewToHide removeFromSuperView];
            }];
    }