• 动画中的模块化设计


    1.动画效果实现难度的推断

    2.将看到的动画效果拆分成小模块

    3.将写好的小模块组合成你所须要的动画效果


    一,新建一个BaseAnimationView主控类

    @interface BaseAnimationView :UIView

    - (void)show;

    - (void)hide;

    - (void)buildView;

    @end


    #import "BaseAnimationView.h"

    #import "CircleView.h"

    #import "LineView.h"

    @interface BaseAnimationView ()

    @property (nonatomic,strong) CircleView *circleView;

    @property (nonatomic,strong) RectView   *lineView;

    @end


    @implementation BaseAnimationView

    - (void)show {

        [self.circleViewshow];

        [self.lineViewshow];

    }


    - (void)hide {

        [self.circleViewhide];

        [self.lineViewhide];

    }


    - (void)buildView {

        self.circleView = [[CircleViewalloc] initWithFrame:CGRectZero];

        [selfaddSubview:self.circleView];

        

        self.lineView = [[RectViewalloc] initWithFrame:CGRectZero];

        [selfaddSubview:self.lineView];

    }

    @end


    二、新建CircleView,LineView类。方法名都统一,此两类被BaseAnimationView控制

    @interface CircleView :UIView

    - (void)show;

    - (void)hide;

    - (void)buildView;

    @end


    #import "CircleView.h"

    @implementation CircleView

    - (void)show {}

    - (void)hide {}

    - (void)buildView {}

    @end


    @interface LineView : UIView

    - (void)show;

    - (void)hide;

    - (void)buildView;

    @end


    #import "LineView.h"

    @implementation LineView

    - (void)show {}

    - (void)hide {}

    - (void)buildView {}

    @end


    三、使用复杂的动画被写进了BaseAnimationView其中。没有暴露不必要的细节,便于维持

    - (void)viewDidLoad {

        [superviewDidLoad];

        

        // 复杂的动画被写进了BaseAnimationView其中,没有暴露不必要的细节

        BaseAnimationView *baseView = [[BaseAnimationViewalloc] initWithFrame:CGRectZero];

        [self.viewaddSubview:baseView];

        [baseViewshow];

    }


    四、总结

    1.制定统一的动画接口

    2.动画中的高内聚低耦合原理

    3.设计动画函数的注意事项

    4.用里氏代换原则来处理动画类的继承问题

    5.动画中的模块化设计


  • 相关阅读:
    OO开发
    重构:Extract Method (提炼函数)
    Vue 一个组件引用另一个组件
    闭包
    视差滚动原理与实现
    JS中的constructor 和 prototype
    jQuery 为动态添加的元素绑定事件
    setTimeout 的理解
    关于Vertical Align的理解
    网页特效:滚动视差设计指南
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7141746.html
Copyright © 2020-2023  润新知