Ios 如何将具有幻灯片效果的ViewController从左向右推?需要动画名称

Ios 如何将具有幻灯片效果的ViewController从左向右推?需要动画名称,ios,objective-c,uiviewcontroller,slide,Ios,Objective C,Uiviewcontroller,Slide,编辑: 下面gif的动画名称是什么(从右到左) 下面的gif补充动画的动画名称是什么(从左到右) 注意:我不想推一段。我想用那个动画推送一个视图 编辑2: 当我谈论动画名称时,有些人感到困惑。但是,下面是一个有效的动画名称示例(名称为:UIViewAnimationTransitionFlipFromRight): 我使用push和pop来回忆堆栈上的操作。我相信导航控制器将导航保持在堆栈式结构中 我使用的是导航控制器,我喜欢使用导航栏项返回(pop)到上一个视图时得到的效果。这是一个很

编辑:

  • 下面gif的动画名称是什么(从右到左)
  • 下面的gif补充动画的动画名称是什么(从左到右)
注意:我不想推一段。我想用那个动画推送一个视图


编辑2:

当我谈论动画名称时,有些人感到困惑。但是,下面是一个有效的动画名称示例(名称为:UIViewAnimationTransitionFlipFromRight):

我使用push和pop来回忆堆栈上的操作。我相信导航控制器将导航保持在堆栈式结构中


我使用的是导航控制器,我喜欢使用导航栏项返回(pop)到上一个视图时得到的效果。这是一个很好的从右到左的平滑效果

这是一个从右向左的效果示例:

    [UIView  beginAnimations: @"Showinfo"context: nil];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.75];
    [self.navigationController pushViewController: view animated:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
    [UIView commitAnimations];

如何从右到左创建互补a? 换句话说,当我进入视图层次结构时

这就是我目前推动视图控制器的方式:

[self.navigationController pushViewController:view animated:YES];

动画名称。。。嗯,调用动画没有独特的方式,但是让我们试试

  • 从右向左滑入(显示视图控制器滑入)
  • 从左向右滑出(取消视图控制器滑出)
这里有许多UIViewController自定义转换的示例,请参见示例:(您感兴趣的类应该是
SOLSlideTransitionAnimator
,它支持各种“幻灯片”动画)

编辑

好的,您不是在谈论动画名称,而是在混合两个API,它们之间存在某种关联:

  • UIView动画(顺便说一下,您使用的是旧API,最好使用带有块的新API)

iOS 4.0及更高版本不鼓励使用此方法。您应该使用基于块的动画方法来指定动画

  • UIViewController转换(如导航推送…)
现在,您将在
UIView
动画事务中嵌入
UINavigationController
push调用。这是错误的

为什么??嗯,调用
UINavigationController
pushViewController:animated
会导致调用UIView动画-苹果默认动画,或者如果您向控制器提供
UIViewControllerTransitioningDelegate
,则您拥有动画,因此基本上您是在动画中调用动画


苹果从iOS 7开始就提供了自定义动画的方法,你们应该使用他们提供的API。这是我链接到的github示例代码使用的API。如果您需要进一步的介绍,请阅读Apple文档,

对于Push,您使用的方法已经正确,只需按view即可,但他们不需要您这边的任何动画代码,只有下面的代码就足够了

[self.navigationController pushViewController: view animated:NO];
对于pop,您可以在DetailView(可从iOS 7获得)中添加以下代码

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

我们需要为viewController添加CATTransition动画。看看这个,

    add <CAAnimationDelegate> in your .h file

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    ViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@ViewController"];
    CATransition *transition = [CATransition animation];
    transition.duration = 0.45;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    transition.delegate = self;
    [self.navigationController.view.layer addAnimation:transition forKey:nil];
    [self.navigationController pushViewController:VC animated:NO];
添加到您的.h文件中
UIStoryboard*情节提要=[UIStoryboard情节提要,名称:@“Main”bundle:nil];
ViewController*VC=[情节提要实例化eviewcontrollerwhiteIdentifier:@ViewController];
CATTransition*转换=[CATTransition动画];
过渡时间=0.45;
transition.timingFunction=[CamediaTimingFunctionWithName:kCAMediaTimingFunctionDefault];
transition.type=kCATransitionPush;
transition.subtype=kCATransitionFromLeft;
transition.delegate=self;
[self.navigationController.view.layer addAnimation:transition-forKey:nil];
[self.navigationController pushViewController:VC动画:否];

你为什么要提出这个建议?如果我理解得很好:你想要一个“推送”的“流行”动画?这些动画的名称是什么?@Vinzz我只想了解上面gif中的动画名称是什么,这样我就可以搜索它及其补充,并在我的代码中随意使用它。@muhammaddnan我不想推送动画segue。我想用该动画推送一个视图。有关“动画名称”的说明,请参见我的编辑2