使用UIViewController自定义动画

时间:2012-04-16 20:26:25

标签: ios xcode quartz-graphics modalviewcontroller

我正在使用自定义动画来呈现我的视图控制器。这是代码:

-(void)launchCustomModal:(id)sender
{
    UIButton *buttonClicked = (UIButton *)sender;
    int selection;
    selection = buttonClicked.tag;
    [ticker removeFromSuperview];
    ticker = nil;

    if (selection == 3)
    {
        MyViewController *myVC = [[MyViewController alloc]initWithNibName:nil bundle:nil];
        modalViewController= [[UINavigationController alloc]initWithRootViewController:myVC];
        modalViewController.navigationBarHidden = YES;
        [modalViewController setToolbarHidden:YES];

        CGRect result = self.view.bounds;
        result.origin.y = -result.size.height;
        modalViewController.view.frame=result;
        [self.view addSubview:modalViewController.view];

        [UIView animateWithDuration:.375 
                         animations:^{ 
                             modalViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
                         }
                         completion:^(BOOL finished) {
                             NSLog(@"Finished");          
                         }];
    }

    return;
}

我注意到这种方法导致了一个非常滞后的过渡。如果我以普通模式启动VC,它的运行非常顺利。此外,如果我只为一个独立于视图控制器的视图设置动画,它也可以非常流畅地工作。我想知道VC有什么东西可能导致它的动画效果如此糟糕吗?如果它是我正在做的事情的症状,或者如果视图控制器不是以这种方式处理,等等。任何输入都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:0)

这是CALayer的阴影。删除它们并且工作正常。