高级动画

作者: shineDeveloper | 来源:发表于2016-11-11 03:01 被阅读61次

首先,需要知道几个类

HMGLTransitionManager 动画管理对象

DoorsTransition 动画类型对象

setTransitionType 设置动画的类型

beginTransition 设置动画并开始运动

commitTransition 提交启动动画

开发前的准备工作

开发工程前需要导入一个动画库:HMGLTransitions  Github地址:GitHub - Split82/HMGLTransitions: HMGLTransitions is set of classes which can animate transition between two UIViews

注意需要导入2个系统的依赖库:openGLES.framework QuartzCore.framework

为了之后动画效果的演示可以导入2张图片

写代码

首先创建3个对象


导入头文件


创建一个3d的动画效果上代码:注意:需要把动画变幻的对象加入到动画管理器对象中

//创建动画管理器对象

HMGLTransitionManager *manager = [HMGLTransitionManager sharedTransitionManager];

//动画变幻对象

Switch3DTransition *sAnim = [[Switch3DTransition alloc] init];

//设置动画方向的类型

[sAnim setTransitionType:Switch3DTransitionLeft];

//设置动画类型

[manager setTransition:sAnim];

//设置动画视图的容器对象

[manager beginTransition:_parentView];

//提交动画运行效果

[manager commitTransition];

开始动画的时候需要将第一个图像视图消失,第二个图像视图加载到容器中,若是2张图像的格式,大小不同,需要设置2张图片的frame相同

//让第一个图像视图消失

[_imageView01 removeFromSuperview];

//让第二张图片加载到容器中

_imageView02.frame = _imageView01.frame;

[_parentView addSubview:_imageView02];

用一个bool变量对图片进行切换

static BOOL isFirst = YES;

if (isFirst) {

//让第一个图像视图消失

[_imageView01 removeFromSuperview];

_imageView02.frame = _imageView01.frame;

[_parentView addSubview:_imageView02];

}else{

//让第一个图像视图消失

[_imageView02 removeFromSuperview];

_imageView01.frame = _imageView01.frame;

[_parentView addSubview:_imageView01];

}

isFirst = !isFirst;

也可以设置动画的开门动画:上核心代码:

//动画类型:开门动画

DoorsTransition *door = [[DoorsTransition alloc] init];

[door setTransitionType:DoorsTransitionTypeOpen];

//设置动画类型

[manager setTransition:door];

运行效果如下:


动画

相关文章

网友评论

    本文标题:高级动画

    本文链接:https://www.haomeiwen.com/subject/rxsjyttx.html