- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10.2 自定义缓冲函数
10.2 ⾃定义缓冲函数
⾃定义缓冲函数
在第⼋章中,我们给时钟项⽬添加了动画。看起来很赞,但是如果有合适 缓冲函数
就更好了。在显⽰世界中,钟表指针转动 时候,通常起步很慢,然后迅速啪地⼀
声,最后缓冲到终点。但是标准 缓冲函数在这⾥每⼀个适合它,那该如何创建⼀个
新 呢?
除了+functionWithName:之外,CAMediaTimingFunction同样有另⼀个构造
函数,⼀个有四个浮点参数 +functionWithControlPoints:::: (注意这⾥奇
怪 语法,并没有包含具体每个参数 名称,这在objective-C 中是合法 ,但是却违
反了苹果对⽅法命名 指导⽅针,⽽且看起来是⼀个奇怪 设计)。
使⽤这个⽅法,我们可以创建⼀个⾃定义 缓冲函数,来匹配我们 时钟动画,为了
理解如何使⽤这个⽅法,我们要了解⼀些CAMediaTimingFunction是如何⼯作
。
三次贝塞尔曲线
CAMediaTimingFunction函数 主要原则在于它把输⼊ 时间转换成起点和终点
之间成⽐例 改变。我们可以⽤⼀个简单 图标来解释,横轴代表时间,纵轴代表改
变 量,于是线性 缓冲就是⼀条从起点开始 简单 斜线 (图10 .1)。
图10 .2 三次贝塞尔缓冲函数
实际上它是⼀个很奇怪 函数,先加速,然后减速,最后快到达终点 时候又加速,
那么标准 缓冲函数又该如何⽤图像来表⽰呢?
CAMediaTimingFunction有⼀个叫做-getControlPointAtIndex :values:
⽅法,可以⽤来检索曲线 点,这个⽅法 设计 确有点奇怪 (或许也就只有苹果能
回答为什么不简单返回⼀个CGPoint),但是使⽤它我们可以找到标准缓冲函数
点,然后⽤ IBezierPath和CAShapeLayer来把它画出来。
曲线 起始和终点始终是{0 , 0}和{1, 1} ,于是我们只需要检索曲线 第⼆个和第三个
点 (控制点)。具体代码见清单10 .4 。所有 标准缓冲函数 图像见图10 .3 。
清单10 .4 使⽤ IBezierPath绘制CAMediaTimingFunction
@interface ViewController ()
@property (nonatomic, weak) IBOutlet IView *layerView ;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//create timing function
CAMediaTimingFunction *function = [CAMediaTimingFunction funct
//get control points
CGPoint controlPoint1, controlPoint2;
[function getControlPointAtIndex :1 values:(float *)controlPoi
[function getControlPointAtIndex :2 values:(float *)controlPoi
//create curve
IBezierPath *path = [[ IBezierPath alloc] init];
[path moveToPoint:CGPointZero];
[path addCurveToPoint:CGPointMake(1, 1)
controlPoint1:controlPoint1 controlPoint2:controlPoint
//scale the path up to a reasonable size for display
[path applyTransform:CGAffineTransformMakeScale(200, 200)];
//create shape layer
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.strokeColor = [ IColor redColor].CGColor;
shapeLayer.fillColor = [ IColor clearColor].CGCol
您可能关注的文档
- (2017-2022年)中国掺铒光纤放大器行业运行模式及发展前景预测报告(目录).docx
- (2017-2022年)中国彩色高灵敏度摄像机行业运行模式及发展前景预测报告(目录).docx
- (信息论)第6章有噪信道编码.ppt
- (过量计算).ppt
- 00沃尔沃的工作再设计.docx
- 01 11证件管理.pdf
- 0167原子分光光度计校准规程.pdf
- 01实验一 Oracle简介.ppt
- 01元素起源1.ppt
- 02-2电源等效变换.pdf
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)