ios – 推动视图控制器时“从左到右”的无缝动画?

ios – 推动视图控制器时“从左到右”的无缝动画?,第1张

概述我有一个带有根视图控制器的应用程序和两个额外的视图控制器.出于设计原因,这些应该看起来是根VC的左侧或右侧.这种空间关系应该以它们出现在屏幕上时呈现给用户的方式来表示.也就是说,通过推动动画. 当按下一个新的视图控制器时,它从右边进入屏幕,这样就可以正常工作或者我的两个VC之一.另一方面,我创建了a custom segue based on this example,这将使VC从左到右显示. 这 我有一个带有根视图控制器的应用程序和两个额外的视图控制器.出于设计原因,这些应该看起来是根VC的左侧或右侧.这种空间关系应该以它们出现在屏幕上时呈现给用户的方式来表示.也就是说,通过推动动画.

当按下一个新的视图控制器时,它从右边进入屏幕,这样就可以正常工作或者我的两个VC之一.另一方面,我创建了a custom segue based on this example,这将使VC从左到右显示.

这可行,但动画本身并不是无缝的.看起来好像视图从左侧推到根VC上 – 看起来好像在视图出现之前有一个黑色背景可见.

我想知道是否有人会知道如何获得一个完全镜像版本的默认“推”(即从右到左)动画?

解决方法 Check out this article.除了过渡本身之外,它正是你想要的.简而言之:

1)创建一个对象来执行动画

@interface Animator : NSObject <UIVIEwControllerAnimatedTransitioning>@end

2)成为导航控制器的委托,并在此导航控制器委托方法上回答该动画师的实例:

// in your vc.m@interface VIEwController () <UINavigationControllerDelegate>  // add this// in vIEw dID loadself.navigationController.delegate = self;// implement this to pass your animator as the thing to be in charge of the Transition animation- (ID<UIVIEwControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationControlleranimationControllerForOperation:(UINavigationControllerOperation)operation fromVIEwController:(UIVIEwController*)fromVC toVIEwController:(UIVIEwController*)toVC {    if (operation == UINavigationControllerOperationPush) {        return [[Animator alloc] init];    }    return nil;}

3)在你的动画师中,回答持续时间:

- (NSTimeInterval)TransitionDuration:(ID <UIVIEwControllerContextTransitioning>)TransitionContext{    return 0.25;}

4)所有这些都来自文章.剩下要做的唯一事情是实现从左到右的幻灯片. (我更改了文章的代码,从左到右滑动):

- (voID)animateTransition:(ID<UIVIEwControllerContextTransitioning>)TransitionContext{    UIVIEwController* toVIEwController = [TransitionContext vIEwControllerForKey:UITransitionContextToVIEwControllerKey];    UIVIEwController* fromVIEwController = [TransitionContext vIEwControllerForKey:UITransitionContextFromVIEwControllerKey];    CGRect fromVCFrame = fromVIEwController.vIEw.frame;    CGfloat wIDth = toVIEwController.vIEw.frame.size.wIDth;    [[TransitionContext containerVIEw] addSubvIEw:toVIEwController.vIEw];    toVIEwController.vIEw.frame = CGRectOffset(fromVCFrame,-wIDth,0);    [UIVIEw animateWithDuration:[self TransitionDuration:TransitionContext] animations:^{        fromVIEwController.vIEw.frame = CGRectOffset(fromVCFrame,wIDth,0);        toVIEwController.vIEw.frame = fromVCFrame;    } completion:^(BOol finished) {        fromVIEwController.vIEw.frame = fromVCFrame;        [TransitionContext completeTransition:![TransitionContext TransitionWasCancelled]];    }];}

我在一个小项目中尝试了所有这些,它的工作非常顺利.

总结

以上是内存溢出为你收集整理的ios – 推动视图控制器时“从左到右”的无缝动画?全部内容,希望文章能够帮你解决ios – 推动视图控制器时“从左到右”的无缝动画?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1114367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存