IOS 高性能添加阴影Shadow Path

翻译自:https://markpospesel.wordpress.com/2012/04/03/on-the-importance-of-setting-shadowpath/

这是超级容易添加阴影到iOS中的任何视图。所有您需要做的是

添加QuartzCore框架到项目中(如果不存在的话)

导入QuartzCore到您的执行文件

添加一行如[myView.layer setShadowOpacity:0.5]

瞧,你的看法现在有一个阴影。


然而,这种最简单的添加阴影的方法在性能上却不是最佳途径。如果对这个添加阴影的View(如果它是一个UITableViewCell的一部分)做一些动画,您可能会注意到在动画不是很流畅,有卡顿。这是因为计算阴影需要Core Animation做一个离屏渲染,以View准确的形状确定清楚如何呈现其阴影。

要说服自己这一点,打开在模拟器的调试菜单的颜色屏幕外渲染的选项。


另外,针对一个物理设备上,启动仪器(⌘I),选择核心动画模板,选择核心动画仪器,并检查彩色屏幕外渲染的黄色选项。


然后在模拟器(或您的设备上),你会看到这样的事情:


这表明东西(在我们的情况下,阴影),花费更多的时间在离屏渲染。

速战速决

只要你提前告诉CoreAnimation你要渲染的View的形状Shape,就会减少离屏渲染计算

[myView.layer setShadowPath:[[UIBezierPathbezierPathWithRect:myView.bounds] CGPath];

加上这行代码,就减少离屏渲染时间,大大提高了性能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 3,169评论 1 23
  • 内容 关于图层动画相关框架的介绍 CoreAnimation结构及图层动画 1. CoreGraphics,Qua...
    smallSun15阅读 1,248评论 1 13
  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。下面我们逐个介绍。...
    4b5cb36a2ee2阅读 371评论 0 0
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 725评论 0 1
  • 我们的生活习惯,人人都知道这些道理,早睡早起,长期锻炼身体,好习惯才会有好身体。 可是在生活中,我们每个人都会有外...
    爱粉阅读 1,082评论 6 13