iOS 自定义转场动画 - present/dismiss转场动画改为push/pop的样式

直接上代码!

1、准备工作:
默认的ViewController类,和创建要present到的下一级控制器SecondViewController类。默认创建,不添加其他操作,可以自己改改背景色做区分。
2、实现present动画:
这里演示的动画类似原生的push和pop动画,present时界面由右向左覆盖上一级界面,dismiss相反过程。

2.1、创建一个继承自NSObject的类LXFLeftPresentAnimation,遵守UIViewControllerAnimatedTransitioning协议

// LXFLeftPresentAnimation.h

#import <UIKit/UIKit.h>

@interface LXFLeftPresentAnimation : NSObject <UIViewControllerAnimatedTransitioning>

@property (nonatomic, assign) BOOL isPresent;

@end

2.2、实现UIViewControllerAnimatedTransitioning协议中的方法

// LXFLeftPresentAnimation.m

#import "LXFLeftPresentAnimation.h"

@implementation LXFLeftPresentAnimation

- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext {
    return 1.f;
}

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
    
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    
    UIView *toView = nil;
    UIView *fromView = nil;
    UIView *transView = nil;
    
    if ([transitionContext respondsToSelector:@selector(viewForKey:)]) {
        fromView = [transitionContext viewForKey:UITransitionContextFromViewKey];
        toView &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值