深入解析:iOS平台上的动画技术与应用

更新:11-13 名人轶事 我要投稿 纠错 投诉

大家好,今天来为大家分享深入解析:iOS平台上的动画技术与应用的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

坐标尺寸等级

bounds:修改该属性会结合center属性重新计算边框。建议通过该属性修改尺寸

frame:修改这个属性通常会导致视图同时改变和移动,然后center和bounds属性会被重置。

设置center:后,视图将移动到新位置。修改后,frame会结合bounds重新计算。

查看显示类别

backgroundColor: 修改该属性会产生颜色渐变过渡效果,本质上是通过系统不断修改tintColor来实现的。

alpha:修改该属性会产生淡入淡出效果。

hidden:修改该属性可以创建翻页隐藏效果。

形态变化

Transform:修改该属性可以实现旋转、变形、移动、翻转等动画效果。是通过矩阵运算来实现的,所以是UIView动画功能比较强大的

UIView动画总结

2.UIView动画 方法

NSIndexPath *indexPaths=[NSIndexPath indexPathForRow:8 inSection:0];

[UIView PerformWithoutAnimation:^{

[self.collectionView reloadItemsAtIndexPaths:@[indexPaths]];

}];

[self.collectionView PerformBatchUpdates:^{

__strong typeof(self)strongSelf=weakSelf;

[strong自行重新加载数据];

}completion:^(BOOL完成){}];

3.CALayer动画

4.CoreAnimation 问题不在动画代码上,在动画算法上

核心方法[CALayer addAnimation:CAAnimation forKey:@""];

/*

核心动画的几类:

CABasicAnimation【基础】-CASpringAnimation

CA属性动画

CAKeyframeAnimation [关键帧]

CAMediaTiming-CAAnimation-CATransition

CA动画集团

*/

///CAMediaTiming

/*

时间、速度、重复次数等在CAMediaTiming协议中定义。属性定义如下:

beginTime - 用于设置动画延迟。如果要延迟1秒,请将其设置为CACurrentMediaTime()+1,其中CACurrentMediaTime()是图层的当前时间。

持续时间- 动画的持续时间。

speed - 动画速度,决定动画时间的放大倍数。当speed为2时,动画时间为设定时长的1/2。

timeOffset - 动画时间偏移。例如,如果动画时长设置为3秒,那么当timeOffset设置为1.5时,当前动画将从中间位置开始,当到达指定位置时,将完成之前跳过的动画的前半部分。

RepeatCount - 动画重复的次数。

RepeatDuration - 动画的重复持续时间。

autoreverses - 动画从初始值转到最终值后,是否将动画反转回初始值。如果设置为YES,则表示动画完成后,会以动画的形式返回到初始值。

fillMode - 确定当前对象在非动画期间的行为。例如,动画开始之前和动画结束之后。

?其实不仅仅是CAAnimation遵循CAMediaTiming协议,熟悉底层结构的朋友应该知道CALayer也遵循这个协议,所以一定程度上我们可以通过控制layer的协议属性来控制动画节奏本身。

*/

CAAnimation *animation=[CAAnimation 动画]; //1

/*

CAAnimation是核心动画基类,不能直接使用。除了CAMediaTiming协议中的方法外,还添加了CAAnimationDelegate的代理属性。详情如下:

TimingFunction - 控制动画的节奏。系统提供了:kCAMediaTimingFunctionLinear(匀速)、kCAMediaTimingFunctionEaseIn(慢进快出)、kCAMediaTimingFunctionEaseOut(快进慢出)、kCAMediaTimingFunctionEaseInEaseOut(慢进慢出、中间加速)、kCAMediaTimingFunctionDefault(默认),当然CAMediaTimingFunction也可以也可以通过定制来创建。

委托-代理。

removedOnCompletion - 是否将图层保持在动画执行后的状态。默认为YES,即动画执行后将其从涂层中移除,恢复到执行前的状态。如果设置为NO,并且设置fillMode为kCAFillModeForwards,则维持动画执行后的状态。

*/

CAPropertyAnimation *propertyAnima=[CAPropertyAnimationanimationWithKeyPath:@""]; //2

CAKeyframeAnimation *frame=[CAKeyframeAnimationanimationWithKeyPath:@""]; //3

CABasicAnimation *baseAnimation=[CABasicAnimationanimationWithKeyPath:@""]; //3

/*

CAPropertyAnimation属性动画用于为对象的可动画属性设置效果,不能直接使用。添加属性如下:

keyPath - CALayer的一个属性名,通过修改该属性的值来实现相应的动画效果。

additive - 属性动画是否基于当前动画效果,默认为NO。

cumulative - 指定动画是否是累积效果,默认为NO。

valueFunction - 该属性与CALayer 的转换属性结合使用。

*/

/*

CAKeyframeAnimation关键帧动画也是通过keyPath对应的属性来控制,但是可以通过值或者路径进行多个阶段的控制。属性如下:

value - 关键帧数组,每个关键帧都会按顺序显示。

path - 关键帧路径,执行动画的元素,优先级高于values,但只影响CALayer的anchorPoint和位置。

keyTimes - 每帧对应的时间。如果不设置,每个关键帧将均分设置的时间。

TimingFunctions - 每一帧对应的动画节奏。

calculationMode - 动画计算模式,系统提供了几种对应的模式。

tensionValues - 动画张力控制。

连续性值- 动画连续性控制。

biasValues - 动画偏差率控制。

rotationMode - 动画沿路径旋转的方式。系统提供两种模式。

*/

/*

CABasicAnimation的基本动画是通过keyPath的相应属性来控制的。需要设置FromValue 和toValue。添加属性如下:

fromValue - keyPath对应属性的初始值。

toValue - keyPath对应属性的结束值。

byValue - 未设置toValue时,toValue=fromValue + byValue,即在当前位置上加多少。

*/

CASpringAnimation *springAima=[CASpringAnimationanimationWithKeyPath:@""]; //4

/*

继承和CABasicAnimation

CASpringAnimation是一个属性动画,具有初速度、阻尼指数等物理参数。我们可以把它想象成一个小球,绑在一个不绝对光滑的地面上的弹簧上。那么我们可以这样理解它的性质(向牛顿叔叔请教物理知识):

质量- 球的质量,影响惯性。

刚度- 弹簧的刚度系数。

阻尼——阻尼系数,地面摩擦力。

initialVelocity - 初始速度,相当于给球一个初速度(可以是正值,也可以是负值,方向不同)

setttingDuration - 结算时间,根据以上参数计算出的预计时间,比您设置的时间更准确。

*/

CATransition * 过渡=[CATransition 动画]; //2

/*

CATransition过渡动画,系统提供了很多很酷的效果。属性如下:

type - 过渡动画类型。

子类型- 过渡动画方向。

startProgress - 动画起点进度(总体百分比)。

endProgress - 动画结束进度(总体百分比)。

过滤器- 自定义转换。

*/

CAAnimationGroup *animationGroup=[CAAnimationGroup 动画]; //2

/*

CAAnimationGroup动画组方便对多个动画进行统一控制和管理。

动画- 所有动画效果元素的数组。

*/

@[@"位移",@"缩放",@"透明度",@"旋转",@"圆角",@"弹簧动画",@"关键帧抖动",@"valueFunction",@"关键帧曲线", @"过渡动画",@"动画组"]

动画代码

[_aniLayer addAnimation:basicAni forKey:NSStringFromSelector(_cmd)];

密钥路径:

/*

不透明度透明度

背景颜色背景颜色

圆角Radius

borderWidth 边框宽度

内容内容

ShadowColor 阴影颜色

ShadowOffset 阴影偏移

ShadowOpacity 阴影透明度

ShadowRadius 阴影圆角

.

旋转旋转

变换.旋转.x

变换.旋转.y

变换.旋转.z

.

规模规模

变换.scale.x

变换.scale.y

变换.scale.z

.

翻译翻译

变换.翻译.x

变换.翻译.y

变换.翻译.z

.

位置位置

位置.x

位置.y

.

边界

边界大小

边界.尺寸.宽度

边界.尺寸.高度

边界.原点

边界.origin.x

边界.origin.y

.

.

*/

CATransition *transtion=[CATransition 动画];

Translation.type=@"pageUnCurl";

/*

fade,上一张图片透明度降低,出现下一张图片

从左到右显示、上传图片、消失

moveIn,下载一张图片并从原始图片的左侧出现

推动,推出效果

以下是私有API。如果您使用的话请仔细查看。

立方体,三维翻转效果

吸吮效果、收缩效果

oglFlip,翻转效果

rippleEffect,水滴波纹效果

cameraIrisHollowOpen,相机打开效果

cameraIrisHollowClose,相机关闭效果

pageUnCurl,向下翻页效果

pageCurl,向上翻页效果

kCATransitionFade 渐变效果

kCATransitionMoveIn 进入叠加效果

kCATransitionPush启动效果

kCATransitionReveal揭示离开效果

subtype : 过渡动画的动画方向

kCATransitionFromRight 从右侧输入

kCATransitionFromLeft 从左侧输入

kCATransitionFromTop 从顶部进入

kCATransitionFromBottom 从底部进入

*/CoreAnimation(核心动画超详细解析)

CoreAnimation CALayer 基础知识

4.CALayer动画 transform属性: CGAffineTransform和CATransform3D

核心方法:

[UIView animateWithDuration:1.25f 动画:^{

CGAffineTransform 变换=CGAffineTransformMakeRotation(45.0f/180.0f*M_PI);

layerView.layer.affineTransform=变换;

}];

[UIView animateWithDuration:1.25f 动画:^{

CATransform3D 变换=CATransform3Didentity;

变换=CATransform3DRotate(变换, -(45.0f/180.0f*M_PI), 0.0f, 1.0f, 0.0f);

layerView.layer.transform=变换;

}];

仿射变换- CGAffineTransform

1.CGAffineTransformMakeRotation(角度)旋转

CGA仿射变换旋转

2. CGAffineTransformMakeTranslation(tx,ty) 移动

CGA仿射变换翻译

3.CGAffineTransformMakeScale(sx,sy)缩放

CGAffineTransformScaleCoreAnimation变换

两者之间的关系

5.贝塞尔曲线。注意主要是画图

keyFrameAni.path=bezierPath.CGPath;

CAKeyframeAnimation* keyFrameAni=[CAKeyframeAnimationAnimationWithKeyPath:@"position"];

keyFrameAni.repeatCount=NSIntegerMax;

keyFrameAni.path=bezierPath.CGPath;

keyFrameAni.duration=15;

keyFrameAni.beginTime=CACurrentMediaTime() + 1;

文章分享结束,深入解析:iOS平台上的动画技术与应用和的答案你都知道了吗?欢迎再次光临本站哦!

用户评论

龙吟凤

iOS里动画效果总是很流畅!

    有14位网友表示赞同!

棃海

想学习怎么做酷炫的iOS动画。

    有17位网友表示赞同!

暮光薄凉

最近在琢磨iPhone动画设计细节。

    有17位网友表示赞同!

ˉ夨落旳尐孩。

苹果手机动画给我的感觉就是很精致啊。

    有20位网友表示赞同!

清原

iOS动画可以提升用户体验。

    有8位网友表示赞同!

逃避

想要了解一下iOS动画有哪些分类?

    有7位网友表示赞同!

心贝

学习iOS动画,感觉可以点亮我的开发技能。

    有16位网友表示赞同!

北朽暖栀

看到优秀的iOS动画总是会被惊艳到。

    有13位网友表示赞同!

凝残月

想知道如何用动画让App更友好易用?

    有18位网友表示赞同!

花容月貌

对iOS系统里的交互动画很感兴趣!

    有14位网友表示赞同!

夏日倾情

想看一些有趣的iOS动画案例。

    有20位网友表示赞同!

tina

学习iOS动画需要哪些工具?

    有13位网友表示赞同!

oО清风挽发oО

苹果的开发文档里关于动画部分很多吗?

    有6位网友表示赞同!

爱情的过失

iOS动画可以用来展现创意想法吧?

    有6位网友表示赞同!

权诈

用动画让App变得更有趣是好主意!

    有10位网友表示赞同!

寻鱼水之欢

有哪些比较优秀的iOS动画库可以使用?

    有6位网友表示赞同!

青袂婉约

学习iOS动画有哪个途径比较好呢?

    有7位网友表示赞同!

隔壁阿不都

希望能找到一些iOS动画素材下载的地方。

    有16位网友表示赞同!

枫无痕

iOS动画技术发展是不是越来越成熟了?

    有18位网友表示赞同!

煮酒

想看看iOS动画设计的新趋势是什么。

    有7位网友表示赞同!

【深入解析:iOS平台上的动画技术与应用】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:挂机赚钱每小时75元:揭秘免费挂机日入100元的真实情况 下一篇:2017年度必学编程语言、框架及开发工具盘点