zoukankan      html  css  js  c++  java
  • iOS 封装Modal动画代码

    1.自定义转场动画要写的代码很多,如果整个项目的转场动画都必须一致,则必须考虑把modal代码封装起来

        secondVC *second = [[secondVC alloc] init];

        second.modalPresentationStyle = UIModalPresentationCustom;

        second.transitioningDelegate = 自定义一个代理;

        [self presentViewController:second animated:YES completion:nil];

    2. 自定义代理对象

    // MYTransition.h

    #import <Foundation/Foundation.h>

    #import <UIKit/UIKit.h>

    #import "Singleton.h"

    @interface MYTransition : NSObject<UIViewControllerTransitioningDelegate>

    SingletonH(MYTransition)

    @end

    // MYTransition.m

    #import "MYTransition.h"

    #import "MYPresentationController.h"

    #import "MYAnimatedTransition.h"

    #import "UIView+MJ.h"

    @implementation MYTransition

    SingletonM(MYTransition)

    #pragma mark - UIViewControllerTransitioningDelegate

    - (UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(UIViewController *)presenting sourceViewController:(UIViewController *)source

    {

        return [[MYPresentationController alloc]initWithPresentedViewController:presented presentingViewController:presenting];

    }

    - (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source

    {

        MYAnimatedTransition *anima = [[MYAnimatedTransition alloc]init];

        anima.show = YES;

        return anima;

    }

    - (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed

    {

        MYAnimatedTransition *anima = [[MYAnimatedTransition alloc]init];

        anima.show = NO;

        return anima;

    }

    @end

    3. 使用封装好的Modal动画,就非常简单了

        secondVC *second = [[secondVC alloc] init];

        second.modalPresentationStyle = UIModalPresentationCustom;

        second.transitioningDelegate = [MYTransition sharedMYTransition];    

        [self presentViewController:second animated:YES completion:nil];

  • 相关阅读:
    SpringBoot之旅第三篇-日志
    SpringBoot之旅第二篇-配置
    SpringBoot之旅第一篇-初探
    394. 字符串解码
    1190. 反转每对括号间的子串
    921. 使括号有效的最少添加
    Leetcode 1171. 从链表中删去总和值为零的连续节点
    设计模式之过滤器模式——Java语言描述
    MySQL查询执行的基础
    设计模式之桥接模式——Java语言描述
  • 原文地址:https://www.cnblogs.com/oumygade/p/4280641.html
Copyright © 2011-2022 走看看