动画中的模块化设计

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.circleView
show];

[self.lineView
show];

}

- (void)hide {

[self.circleView
hide];

[self.lineView
hide];

}

- (void)buildView {

self.circleView = [[CircleView
alloc]
initWithFrame:CGRectZero];

[self
addSubview:self.circleView];

self.lineView = [[RectView
alloc] initWithFrame:CGRectZero];

[self
addSubview: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 {

[super
viewDidLoad];

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

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

[self.view
addSubview:baseView];

[baseView
show];

}

四、总结

1.制定统一的动画接口

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

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

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

5.动画中的模块化设计

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 20:43:29

动画中的模块化设计的相关文章

【Nginx】模块化设计

高度模块化的设计是Nginx的架构基础.所有模块都是以ngx_module_t结构体表示,该结构体内部定义了7个回调方法,它们负责模块的初始化和退出.commands成员是一个包含有ngx_command_t结构体的数组,ngx_command_t的作用就是解析配置项.ctx是一个void指针,这使得模块具有高度灵活性. ctx可以指向不同类型模块的通用接口,官方Nginx共有5大类模块,与ctx接口的对应关系如下: 核心模块:接口为ngx_core_module_t,类型宏为NGX_CORE_

模块化设计思考

模块主要包括:            1.接口                    1-1.OO中,接口通常是一个层次结构                        1-2.接口表示一种抽象的数据类型                    2.实现                        2-1.接口的具体实现                        2-2.可重用的数据结构                    3.算法                    3-1.在一个实

iOS程序模块化设计

一.模块化设计的概述: 模块化设计(Block-based design):对一定范围内的不同功能或相同功能的不同性能.不同规格的产品进行功能分析的基础上,划分并设计出一系列功能模块,通过模块的选择和组合构成不同的定制产品,以满足市场的不同需求. 模块化设计是绿色设计方法之一,绿色设计是指“在产品整个生命周期内,着重考虑产品环境属性(可拆卸性.可回收性.可维护性.可重复利用性等)并将其作为设计目标,在满足环境目标要求的同时,保证产品应该有的功能.使用寿命.质量等要求”. 绿色设计的原则被公认为“

thinkphp学习笔记5—模块化设计

1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,Home,Common,Runtime四个模块

AngularJs学习笔记7——四大特性之模块化设计

模块化设计 1.引用自定义模块并调用 自定义模块中,如果有一些服务.封装好笑模块,在另外一个模块中(声明的时候,在依赖列表中加入要引入的模块) var app02 = angular.module('fan02',['ng','fan']); 就调用fan02模块中所定义的东西 2.ng内置的模块的用法 (1) ngRoute模块(路由模块) AngularJS是一个开源的js框架.用在数据操作比较频繁的场景下,用于SPA应用 单页面应用的工作原理: 1.页面url:http://127.0.0

Swift之xib模块化设计

一.解决问题 Xib/Storybarod可以方便.可视化的设置约束,在开发中也越来越重要.由于Xib不能组件化,使得封装.重用都变得不可行.本文将介绍一种解决方案,来实现Xib组件化. 二.模型块原理 在介绍原理之前,我们先弄清楚两个概念: 从上图可以看出,分别选中File's Owner及根视图View,都有Custom Class属性面板.其中Class属性,有什么作用,区别又是什么呢? 2.1 View的Class属性 View的Class属性用于指定选中的视图的实例化类.Xib实际上是

ThinkPHP学习笔记(五)模块化设计

1.模块化设计 一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器. 一个典型的URL访问规则是(我们以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式):    http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] ThinkPHP3.2的应用可以支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:    >php.exe index.p

第三十七课:动画的原理和设计

js里面最简单的动画原理:在setTimeout或setInterval定时器中,每隔20-30ms改变元素的样式,于是就有了动画.比如:改变宽高,就叫缩放:改变坐标,就叫做位移:改变坐标轴,就叫旋转:改变透明度,就叫做淡入淡出. css3中有一个transform样式,它的值可以是rotate()旋转,skew()扭曲,scale()缩放,translate()位移,matrix()矩阵.这里不仅支持2D的操作,也支持3D的操作. 我们先举一个小小的例子,来实现一个方块的移动,达到动画的效果.

PHP--进行模块化设计

PHP--进行模块化设计 [来源] 达内    [编辑] 达内   [时间]2012-10-30 导航模块可以简单列为一个关于三级页面链接的HTML文件.通常你可以通过用另一种颜色来标明对当前区域的链接来暗示用户他们现在所在的站点的区域.导航可以是位于页面左边的链接列表 HP中的include和require中的两个函数,能在网站的设计中提高网站的建设效率与维护,现详细讲解如下: include 函数与C中同名的预处理命令是不同的,它是一个给出文件名(如:include(test.PHP)),