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];
动画名称。。。嗯,调用动画没有独特的方式,但是让我们试试
- 从右向左滑入(显示视图控制器滑入)
- 从左向右滑出(取消视图控制器滑出)
SOLSlideTransitionAnimator
,它支持各种“幻灯片”动画)
编辑
好的,您不是在谈论动画名称,而是在混合两个API,它们之间存在某种关联:
- UIView动画(顺便说一下,您使用的是旧API,最好使用带有块的新API)
- 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