0

我需要调用两个不同的 CATransitionFromRight 函数之一(我已创建),一个执行 kCATransitionFromRight,另一个执行 kCATransitionFromLeft,是的,完成后我将组合该函数。

但是,我的导航堆栈中有一个视图,深度为 1 个视图。根据您是从堆栈上方还是下方的视图进入或离开视图,我需要使用左侧或右侧。

First view => problem view, transition left.
Problem view => first view, transition right.

Problem view => third view, transition left.
Third view <= problem view, transition right.

我目前调用 viewWillAppear 中的函数。

但是,我不知道如何告诉函数使用哪个方向。

我知道我可以使用应用程序委托变量、单例或 nsuserdefault 设置,我只是想知道是否有一种我没有考虑过的方法更合适?

我知道我可以在后退按钮等中调用该函数,但是 viewWillAppear 中的调用会覆盖它。

+ (void)transitionFromRight:(UIViewController*)view {

    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];

}
4

1 回答 1

2

我假设您使用的是UINavigationController.

您建议的所有选项都不合适,因为它们都是全局数据访问点概念的变体,您不需要这样的东西。

这是一个更好的方法:

UINavigationControllerDelegate为您创建一个UINavigationController.您将听到有关通过委托方法之一将新视图推送/弹出到导航堆栈的信息,例如navigationController:willShowViewController:animated:. 在适当的委托方法中,您可以在自定义 UIViewController 上设置一个属性,以便它知道在 viewWillAppear 等中使用哪个动画。

于 2013-01-18T21:44:59.413 回答