2010-12-22 61 views
1

所以我尝试使用此代码视图之间切换:问题使用CATransitions切换视图

CATransition *applicationLoadViewIn = [CATransition animation]; 

    [applicationLoadViewIn setDuration:1]; 

    [applicationLoadViewIn setType:kCATransitionReveal]; 

    [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; 

    MyViewControllerClass *theControllerIAmSwitchingTo = [[MyViewControllerClass alloc] init]; 

    [[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal]; 

但是,该代码不起作用。没有错误,并且代码执行得很好,但它没有做任何事情。我在这里有什么错误?

+0

你在模拟器上测试它吗? – 2010-12-22 07:20:33

回答

1

您需要将动画添加到父视图层,然后将该视图添加为父视图的子视图。

所以不是

[[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal]; 

您需要使用

[parentView.layer addAnimation:animation forKey:kCATransitionReveal]; 
[parentView addSubview:theControllerIAmSwitchingTo.view]; 
1

只是不喜欢它:

CATransition *applicationLoadViewIn = [CATransition animation]; 

    [applicationLoadViewIn setDuration:1]; 

    [applicationLoadViewIn setType:kCATransitionReveal]; 

    [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; 

    MyViewControllerClass *theControllerIAmSwitchingTo = [[MyViewControllerClass alloc] init]; 

    [[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal]; 

    [self.navigationController pushViewController:theControllerIAmSwitchingTo animated:NO]; 

我注意到的问题是,您不添加您的视图您的导航堆栈,这就是为什么你的视图不会被加载,你看不到动画。