gpt4 book ai didi

ios - 使用Core Animation做完全自定义的动画-性能

转载 作者:行者123 更新时间:2023-12-04 14:06:42 25 4
gpt4 key购买 nike

文章

https://www.objc.io/issues/12-animations/animating-custom-layer-properties/

关于使用Core Animation进行完全自定义动画的说法是这样的:

Suppose that instead of implementing our clock face using individual layers, we wanted to draw the clock using Core Graphics. (In general this will have inferior performance, but it’s possible to imagine that there are complex drawing operations that we might want to implement that would be hard to replicate using ordinary layer properties and transforms.) How would we do that?



换句话说,我们使用CG手动绘制CA的每一帧,因为我们的动画太复杂了,无法仅使用内置的CALayer功能来完成。

问题是关于 性能较差
  • 由于CG在CPU上运行,这是否有阻塞主线程的风险?
  • 这可能是使用SpriteKit而不是CA的原因(因为SpriteKit在GPU上运行并且不会阻塞主线程)?
  • 最佳答案

  • 是的。对你的第一个问题。使用Core Graphics(Quartz或CG)进行绘图受CPU限制,将极大降低应用程序的各个方面的速度。...如果准备,绘图,合成和演示文稿占用了帧时间,则您的应用程序将明显停顿并降低其帧速率,完成绘图。即使这小于每秒1帧。

  • 在输出大PDF时会看到此信息。 Core Graphics忙于以所有其他 Activity 为代价进行渲染,比其他所有因素都更重视输出质量。部分原因是因为它的起源是PostScript,以打印输出为目标,质量是主要目标,而且还因为它仍然是创建图像而不是动画的以质量为中心的框架。
  • SpriteKit vs CA比SpriteKit/CA vs CG更加细微的争论

  • 了解这些框架的不同优先级,功能和性能特征将揭示如何最好地将它们一起使用,以及何时以排他性的方式选择它们。

    就CA和CG而言,命名约定传达的依赖性和互操作性不一定是正确的,必要的或在那里,但可以有效地很好地结合在一起。这只是个平衡的行为,因为他们在某些事情上的做事大相径庭。

    CG = Core Graphics

    CA = Core Animation



    核心动画就是它所说的话:非常擅长动画制作。但它也有出色的创意内容创建工具。事情可能会让您感到惊讶,因为它并不是一个太多的框架。它的许多关键功能都被使用它们的UIKit包装器所遮盖。

    您所链接的文章完全避免了讨论Core Animation的内容创建工具,这些工具还不成熟,而且还不错。特别是对于动画框架。您可以完全在Core Animation中制作所需的所有组件以及完美的时钟动画,而无需使用任何较慢的Core Graphics绘图。我不确定为什么这篇文章没有说明这些功能。

    在Core Animation内容创建层上,其中两个:

    CAShapeLayer可以制作任何形状或形状组合的图形并赋予其动画效果。
    CATextLayer完全支持NSAttributedString及其所有属性,并对它们进行动画处理。

    将Core Animation视为Flash和QuickTime启发的封闭源,特定平台的API,可从头开始创建高性能动画和视觉交互。
  • 作为图形和内容创建框架,CALayers不具备Core Graphics的所有功能。但是它们在SpriteKit的方式上也没有什么限制。
  • 作为一个动画和交互性框架,与Sprite Kit相比,Core Animation是一种更好的(在许多方面)基于图形,动画和事件的游戏引擎,并且性能更高(在许多方面),而SpriteKit中没有包含某些更具体的附加组件。

  • CALayers不仅仅是简单的事情。他们也能够绘制内容并对其进行 mask 。然后以各种奇妙的方式高度动画化,包括伪3D旋转空间以及透视变形。

    ,Core Animation中缺少,但是在SpriteKit中是:
  • 声音:在SK中播放声音有两种不同的方法,在CA中不播放自己的
  • 则没有方法
  • 游戏循环:虽然SK针对事件进行了优化,但它也有一个围绕
  • 构建的游戏循环
  • Physics:您需要将UIKit Dynamics与Core Animation Layers一起使用才能获得
  • 物理知识
  • 图像打包:需要对纹理进行自己的文件处理,并对其进行解压缩
  • 可视场景编辑器:可以说损失不大。从设计师的角度说
  • 视觉粒子编辑器:这是一个更大的损失。没有一种
  • 很难取得好的效果
  • SKActions:但是CA同时具有隐式/显式动画和/或CAKeyFrameAnimation

  • 使用SpriteKit的绝对缺点:
  • 当您需要UIKit及其出色的布局功能时,它们并不能很好地与
  • 一起使用
  • 特殊错误,因为只有很少(看似)的资源和错误测试
  • 非常小的用户社区,提供了很少的,几乎没有问题的问答支持
  • 几乎没有来自苹果的支持,他们的论坛是悲伤的荒原
  • 该文档太糟糕了,大多是过时的和/或无意义的
  • 游戏引擎无数的示例和演示
  • 通过渗透了解工作流程,范例和过程
  • 场景编辑器运行缓慢,设计不当,营养不良,并且在Xcode中的适应性很差
  • 不支持NSAttributedString支持标签和其他文本表示形式


  • 在第二部分中添加答案后,我将删除一些历史性的东西:

    快速回顾核心图形历史,并进行适当的修改…

    Mac上的PostScript很大程度上要归因于桌面出版,而Mac在其协助创建的新兴的新兴设计和创意计算市场中取得了成功。这些市场使苹果得以生存,而IBM/Intel/Microsoft则对注重成本和兼容性的“生产力”和企业市场发起了攻击。现在,数字创意者对蒂姆·库克(Tim Cook)的苹果挤奶iPhone摇钱树而感到沮丧和愤怒,而他们却没有承认,尊重,关心甚至赶不上现代桌面创意的能力。*

    选择框架时要考虑的其他事项:

    凭借消费者和创意计算历史上最大的现金储备,他们在创新工具的创建方面也没有进行创新。这感觉(和看起来)很像是对苹果核心值(value)/传统的背叛,以及对那些在过去的几十年中致力于学习和使用以苹果为中心的创作工具的人们的活力与热情的背叛。毫无疑问,创造力“酷”帮助苹果成为了“酷”,提供了导致iPhone和iPad的iPod的期望和采用率。

    由于对iPhone的轻巧和毫不客气的现金关注,该品牌的某些光泽肯定会下降。出于一个简单的原因,这令人担忧,这些因素会影响这些类型的决策:SpriteKit的使用率极低。苹果可能决定削减已经精简的开发团队的成本以获取更大的利润,因为利润似乎已经超过了新苹果的所有其他动机。与iPhone带来的利润增长相比,在框架和软件开发资源上的创新投入几乎不成比例。

    苹果公司没有迹象表明了解这种需求,也不希望积极而热情地投资于使新框架尽可能地完善或稳定。验证并因此吸引开发人员使用新框架需要Apple似乎不愿做出透明的努力。苹果公司似乎对学习,采用和使用新框架所需的时间和精力不屑一顾。完全推定他们的期望的是,开发人员将冒采用仅可因寻求利润而被苹果关闭的技术的风险。

    Sprite Kit和Scene Kit的妊娠期非常长,而且以前的发行版中有多个showtopper bug。加上与开发人员之间的沟通非常差,并且完全不关心编码人员的信心和采用率的增长,这导致采用率真正下降。

    在没有得到广泛采用的情况下,苹果可能会决定放弃SpriteKit,而不是让它像往常一样li行。

    可以说,cocos2D-X的持续成功是苹果未能使SpriteKit尽其所能和应有的直接结果。未能及时,周到地支持,沟通,管理和更新其问题的完全失败,引起了人们强烈的避免使用SpriteKit的强烈愿望,并且开发者对此也产生了很大的不确定性和恐惧感。

    由于他们用于开发人才的预算几乎是无限的,这种事情应该引起苹果的尴尬和批评,并引起对他们其他“计划”的严格审查,并涉足“创新”。由于我不明白的原因,批判性地考虑苹果做什么和不做什么以及这些选择产生的影响和影响并不是一件要做的事。

    我认为可以说,他们聘用的内部软件开发人员和软件输出质量在硬件销售,应用商店收入,覆盖范围和市场影响力方面都无法与iOS平台的增长相提并论。与Sprite Kit的瘦弱用户群以及几乎不使用SceneKit相比,这将很快带来更明显的后果。

    关于ios - 使用Core Animation做完全自定义的动画-性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41636301/

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