gpt4 book ai didi

ios - Core Animation drawLayer :inContext driven by NSTimer, 我做对了吗?

转载 作者:行者123 更新时间:2023-12-01 18:32:31 24 4
gpt4 key购买 nike

我正在做一个涉及 Core Animation 和 AV Foundation 的项目。我想使用 Core Animation 渲染一些效果,然后通过 AV Foundation 将其导出到视频文件。我想要实现的动画效果是在 iPad 上重放最终用户签名他/她的签名。

到目前为止我所取得的成就:
- 引用 Apple 的 GLPainter 示例,我能够记录用户签名的笔画,每个单独的笔画由多个触摸点 (CGPoint) 组成,这些触摸点已记录在我的自定义 UIView 的 touchBegin/touchMoved/touchEnd 方法中。
- 由可重复的 NSTimer 驱动,我可以在我的自定义 UIView 上重新绘制它。主要是从一个点到下一个点画线的重复过程。

我正在尝试做的事情:
用 Core Animation 技术实现签名重绘,然后用 Av Foundation 组合代码嵌入核心动画代码来渲染最终输出。

我现在关心的是:

  • 对Core Animation一无所知,最近几天一直在学习。但是,我读过的教程/书籍只告诉我如何通过更改 CALayer 的属性来制作隐式动画,或制作 CAKeyframeAnimation。但是我的动画有点像是在图层的 Canvas 上逐步绘制一些东西,而不是移动一些东西。那么,如何在 Core Animation 中做到这一点呢?

  • 我现在在做什么:与我对 Quartz2D 所做的非常相似,我使用 NSTimer 重复设置我的 CALayer 对象需要显示,这反过来又调用其委托(delegate)的 drawLayer:inContext 方法的实现,我在其中编写的代码与我在 UIView 的 drawRect 中编写的代码完全相同。

    好吧,我做了一种动画,没有涉及任何 CAAnimation。我只是觉得很奇怪,感觉我做错了。我还没有着手将核心动画与 AV 基础部分结合起来,但我怀疑我的见鬼不会通过。

    我做了诚实的搜索,所以我发誓,但没有发现任何相关的东西。我不得不说我在 Quartz2D 和 Core Animation 方面的经验非常有限,所以,如果有人能给我一些提示,我真的很感激,谢谢!

    最佳答案

    您要做的是将您的绘图同步到屏幕的刷新率。一个 NSTimer不是特别擅长这个。您正在寻找的类(class)是CADisplayLink .像这样访问它:

    link = [[UIScreen mainScreen] 
    displayLinkWithTarget:self
    selector:@selector(shouldUpdateDisplayLink:)];

    设置需求显示在 shouldUpdateDisplayLink:打回来。保留显示链接以确保它保持不变,并可选择设置较低的刷新率,以匹配媒体播放。

    关于ios - Core Animation drawLayer :inContext driven by NSTimer, 我做对了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117654/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com