黑马程序员:IOS面试宝典之关于动画_黑马程序员面试技巧
黑马程序员:IOS面试宝典之关于动画由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员面试技巧”。
关于动画
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面试宝典之c语言C语言语法1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量......
OC语言(★★)有人可能会问对于我们学iOS的同学来讲,面试还会问Objective-C基础吗?答案是会的,但是不会太多,因此我给了两颗星的重要程度。一般笔试的时候出现Objective-C基础题的......
黑马程序员:IOS面试宝典之第三方框架面试常问,你经常使用一些第三方库吗?比如AFNetworking SDWebimage JsonModel等,有没有去了解过里面的实现原理? 第三方框架1.关于cocoaPo......
数据存储(★★)1、IOS中常用的数据存储方式有哪些?答:1.数据存储有四种方案,NSUserDefault,KeyChain,File,DB.2.其中File有三种方式:plist,Archiver,Stream 3.DB包括core Data和FM......
黑马程序员:IOS面试宝典之UITableView与UICollectionView
黑马程序员:IOS面试宝典之UITableView与UICollectionView 1.UITableView的重用机制?(或者如何在一个view上显示多个tableView,tableView要求不同的数据源以及不同的样式 (要......
