2014-02-13 68 views
0

我用这个代码:眨眼定制转型,ios7

CATransition *transition = [[CATransition alloc]init]; 
    transition.duration = 0.3; 
    transition.type = kCATransitionMoveIn; 
    transition.subtype= kCATransitionFromLeft; 
    //transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransactionCompletionBlock]; 

并获得的查看权限视觉闪烁。如果我使用kCATransitionFromRight,我会在左边闪烁。我在模拟器和设备上测试过。那是错的?

回答

0

使用波纹管代码,并按照指示波纹管

CATransition *navTransition = [CATransition animation]; 
    navTransition.duration = 0.65; 
    navTransition.timingFunction = [CAMediaTimingFunction 
      functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    [navTransition setType:kCATransitionReveal]; 
    [navTransition setSubtype:kCATransitionFromRight]; 
    [view.navigationController.navigationBar.layer 
      addAnimation:navTransition forKey:nil]; 

这里是一个最好的方法:

UINavigationController创建一个UINavigationControllerDelegate。您可以通过navigationController:willShowViewController:animated:之类的代理方法获得有关新视图被推送/弹出到导航堆栈的信息。在适当的委托方法,你可以这样它就知道在viewWillAppear

0

如果部署目标为7.0要使用的动画,使用UINavigationControllerDelegate定制推送/弹出动画上的自定义UIViewController设置属性。

这有点复杂,但它非常强大。无论你怎么想,你都可以和这些代表一起做。

- (id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController 
         interactionControllerForAnimationController:(id <UIViewControllerAnimatedTransitioning>) animationController NS_AVAILABLE_IOS(7_0); 

- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController 
           animationControllerForOperation:(UINavigationControllerOperation)operation 
              fromViewController:(UIViewController *)fromVC 
               toViewController:(UIViewController *)toVC NS_AVAILABLE_IOS(7_0);