iphone – 左侧的PushViewController – 简单?
发布时间:2020-12-14 17:16:12 所属栏目:百科 来源:网络整理
导读:我试图让我的ViewController以与标准PushViewConrtoller相同的速度从左向右滑动,我没有使用NavBar并且不想使用Modal,是否有一种简单的方法可以做到这一点,我已经看到不同线程上的很多变化,但它们都没有正常工作! 我正在使用带有以下代码的导航控制器来实现
我试图让我的ViewController以与标准PushViewConrtoller相同的速度从左向右滑动,我没有使用NavBar并且不想使用Modal,是否有一种简单的方法可以做到这一点,我已经看到不同线程上的很多变化,但它们都没有正常工作!
我正在使用带有以下代码的导航控制器来实现我的推送权限…… - (IBAction)launch1990:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"1990Storyboard" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"1990"]; [self.navigationController pushViewController:vc animated:YES]; } 解决方法
UIStroryBoard当您按下视图控制器或segues时,它不会让您自定义太多.我最终做的是覆盖perform方法并使用QuartzCore Animations来定制我们的转换.我将UIStoryBoardSegue子类化并覆盖了执行函数.
下面为Push或Pop定制,然后为Segues定制. (对于segues,请记住将类更改为IB中的自定义类). 要从正常的弹出或推动(这确实交叉淡入淡出动画,为你的调整): #import <QuartzCore/QuartzCore.h> - (IBAction)launch1990:(id)sender { CATransition* transition = [CATransition animation]; transition.duration = .45; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaSEOut]; transition.type = kCATransitionFade; [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"1990Storyboard" bundle:nil]; UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"1990"]; [self.navigationController pushViewController:vc animated:NO]; } 要从segue做到这一点: //ZHCustomSegue.h #import <Foundation/Foundation.h> @interface ZHCustomSegue : UIStoryboardSegue @end // ZHCustomSegue.m #import "ZHCustomSegue.h" #import "QuartzCore/QuartzCore.h" @implementation ZHCustomSegue -(void)perform { UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; UIViewController *destinationController = (UIViewController*)[self destinationViewController]; CATransition* transition = [CATransition animation]; transition.duration = .45; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaSEOut]; transition.type = kCATransitionFade; //kCATransitionMoveIn; //,kCATransitionPush,kCATransitionReveal,kCATransitionFade //transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft,kCATransitionFromRight,kCATransitionFromTop,kCATransitionFromBottom [sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [sourceViewController.navigationController pushViewController:destinationController animated:NO]; } @end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |