人人范文网 范文大全

黑马程序员:IOS面试宝典之关于动画

发布时间:2020-03-02 19:12:35 来源:范文大全 收藏本文 下载本文 手机版

关于动画

1.谈谈你对Core Graphic 绘图的了解? CoreGraphics也称为Quartz 2D 是UIKit下的主要绘图系统,频繁的用于绘制自定义视图。Core Graphics是高度集成于UIView和其他UIKit部分的。Core Graphics数据结构和函数可以通过前缀CG来识别。

视图可以通过子视图、图层或实现drawRect:方法来表现内容,如果说实现了drawRect:方法,那么最好就不要混用其他方法了,如图层和子视图。自定义绘图大部分是由UIKit或者Core Graphics来实现的。

2D绘图一般可以拆分成以下几个操作: 线条 , 路径 , 文本 , 图片 , 渐变 由于像素是依赖于目标的,所以2D绘图并不能操作单独的像素,我们可以从上下文(Context)读取它。

绘图就好比在画布上拿着画笔机械的进行画画,通过制定不同的参数来进行不同的绘制。

http://www.daodoc.com/articles/jIJzMf

http://blog.csdn.net/mangosnow/article/details/37054765

2.Core Animation(核心动画)? CoreAnimation也就是核心动画, 是一组非常强大的动画处理API, 可以使用少量

的代码做出绚丽的效果, 是直接作用在CALayer上的, 并非UIView, 并且Core Animation的动画执行过程都是在后台操作, 不会阻塞主线程.所有动画都是作用在CALayer上的, 当把动画添加到Layer上, 是不直接修改它的属性, Core Animation维护了两个平行layer的层次结构, 模型层树可以看到Layer的状态, 表示层树则是动画正在表现的值的近似.Core Animation的使用步骤: 1> 使用它需要先添加QuartzCore.framework框架和引入主头文件(iOS7.0+ 不需要) 2>.初始化一个CAAnimation对象,并设置一些动画相关属性

3>.通过调用CALayer的addAnimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了

4>.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画

1.转场动画? CATransition-转场动画, 作为CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点. UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果.如下是转场动画的过渡效果:

使用UIView的动画函数, 实现转场动画 1> 单视图:

+(void)transitionWithView:(UIView*)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options

animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion; 参数说明:

duration:动画的持续时间 view:需要进行转场动画的视图 options:转场动画的类型

animations:将改变视图属性的代码放在这个block中 completion:动画结束后,会自动调用这个block 2> 双视图: +(void)transitionFromView:(UIView*)fromView toView:(UIView*)toView

duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options finished))completion; 参数说明:

duration:动画的持续时间 options:转场动画的类型

animations:将改变视图属性的代码放在这个block中 completion:动画结束后,会自动调用这个block

completion:(void

(^)(BOOL 2.一个动画怎么实现? 以转场动画为例: 1> 创建CATransition对象

CATransition *animation = [CATransition animation]; 2> 设置运动时间(即动画时间) animation.duration = DURATION; 3> 设置运动type(类型)

animation.type = type; if (subtype != nil) { 4> 设置子类 (和type配合使用, 指定运动的方向) animation.subtype = subtype; } 5> 设置运动速度(动画的运动轨迹,用于变化起点和终点之间的插值计算,形象点说它决定了动画运行的节奏,比如是均匀变化(相同时间变化量相同)还是先快后慢,先慢后快还是先慢再快再慢) animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;

6> 将动画添加到view的Layer层

[view.layer addAnimation:animation forKey:@\"animation\"]; 动画类型如下: typedef enum : NSUInteger { Fade = 1, //淡入淡出 Push, //推挤 Reveal, //揭开 MoveIn, //覆盖 Cube, //立方体 SuckEffect, //吮吸 OglFlip, //翻转 RippleEffect, //波纹

PageCurl, //翻页 PageUnCurl, //反翻页 CameraIrisHollowOpen, //开镜头 CameraIrisHollowClose, //关镜头 CurlDown, //下翻页 CurlUp, //上翻页 FlipFromLeft, //左翻转 FlipFromRight, //右翻转 } AnimationType; 3.CADisplayLink CADisplayLink是一种以屏幕刷新频率触发的时钟机制,每秒钟执行大约60次左右

CADisplayLink是一个计时器,可以使绘图代码与视图的刷新频率保持同步,而NSTimer无法确保计时器实际被触发的准确时间 使用方法:

定义CADisplayLink并制定触发调用方法 将显示链接添加到主运行循环队列

黑马程序员:IOS面试宝典之第三方框架

黑马程序员:IOS面试宝典之OC语言

黑马程序员:IOS面试宝典之c语言

黑马程序员:IOS面试宝典数据存储

黑马程序员:IOS面试宝典之UITableView与UICollectionView

黑马程序员自荐信

黑马程序员基础测试题

黑马程序员php培训:php基础教程之MySQL目录

黑马程序员自荐信李好运

黑马程序员:AJAX入门系列

黑马程序员:IOS面试宝典之关于动画
《黑马程序员:IOS面试宝典之关于动画.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档