在自定义过渡中闪烁,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,我会在左边眨眼。我在模拟器和设备上进行了测试。这是不对的?

使用波纹管代码并按照波纹管说明进行操作

  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:)将新视图推送/弹出到导航堆栈的信息。在适当的委托方法中,您可以在自定义UIViewController上设置属性,以便它知道要在viewWillAppear等中使用哪个动画。

如果部署目标是 7.0,请使用 UINavigationControllerDelegate 自定义推送/弹出动画。

它有点复杂,但它非常强大。无论你想象什么,你都可以用这些代表来做。

- (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);

最新更新