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

  1. 添加QuartzCore框架到项目中(如果不存在的话)
  2. 导入QuartzCore到您的执行文件
  3. 添加一行如[myView.layer
    setShadowOpacity:0.5]

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

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

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

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

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

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

速战速决

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

[myView.layer setShadowPath:[[UIBezierPath
bezierPathWithRect:myView.bounds] CGPath];

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

关于设置shadowPath的重要性的更多相关文章

  1. php使用curl设置超时的重要性

    原文:http://phpquan.com/lamp/php/php-curl-timeout/ 网站登录不了,原因是没有可用的 PHP 子进程来响应新的请求了.这可能是是由于PHP-curl  没有 ...

  2. 让CALayer的shadowPath跟随bounds一起做动画改变-b

    在iOS开发中,我们经常需要给视图添加阴影效果,最简单的方法就是通过设置CALayer的shadowColor.shadowOpacity.shadowOffset和shadowRadius这几个属性 ...

  3. 最全的linux命令大全,shell运维手册

    shell实例手册 0 说明{ 手册制作: 雪松} 1 文件{        ls -rtl                 # 按时间倒叙列出所有目录和文件 ll -rt    touch file ...

  4. Android后台保活实践总结:即时通讯应用无法根治的“顽疾”

    前言 Android进程和Service的保活,是困扰Android开发人员的一大顽疾.因涉及到省电和内存管理策略,各厂商基于自家的理解,在自已ROOM发布于都对标准Android发行版作为或多或少的 ...

  5. android应用保活机制

    android应用保活的基本原理: 都是通过双进程互拉以及设置进程的重要性,除非你root后 把自己的进程设置成系统进程. 互拉的方式有很多种 1.可以通过监听系统广播来把自己拉起来 2.可以多个ap ...

  6. ArcGIS制图之Sub Points点抽稀

    简介 Sub Points工具是 Esri 中国自主开发的一个插件,该工具优先考虑点在空间分布上的均匀合理性,并结合点数据中包含的 "优先级" 属性进行筛选.通过获取每个点在一定范 ...

  7. (转)shell实例手册

    原文地址:http://hi.baidu.com/quanzhou722/item/f4a4f3c9eb37f02d46d5c0d9 实在是太好的资料了,不得不转 shell实例手册 0说明{ 手册制 ...

  8. app 性能优化的那些事(二)

    来源:树下的老男孩 链接:http://www.jianshu.com/p/2a01e5e2141f 这次我们来说说iOS app中滑动的那些事.iOS为了提高滑动的流畅感,特意在滑动的时候将runl ...

  9. H264学习第一篇(编码结构分析)

    学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发 ...

随机推荐

  1. K-th Number 【POJ - 2104】【可持久化线段树】

    题目链接 因为这道题没有删除修改之类的,所以很多人会用离散化之后的线段树来做,但是实际上(可能是我懒得去做离散化这个操作了),然后就是直接写可持久化线段树,区间的长度就是int的从最小到最大的长度,然 ...

  2. Naive Bayes Algorithm And Laplace Smoothing

    朴素贝叶斯算法(Naive Bayes)适用于在Training Set中,输入X和输出Y都是离散型的情况.如果输入X为连续,输出Y为离散,我们考虑使用逻辑回归(Logistic Regression ...

  3. socketpair

    与pipe的区别 pipe产生的文件描述符是半双工的,需要pipe两次才能实现全双工,产生的两个描述符是一个读,一个写 socketpair直接就可以全双工,产生的两个文件描述符的任何一个都可读可写 ...

  4. VS2012不显示最近打开的文件

    解决: 1.点击开始,在左下角输入“regedit” 2.右击HKEY_CURRENT_USER,点击查找,输入NoRecentDocsHistory 3.右边找到NoRecentDocsHistor ...

  5. JavaWeb学习——session总结

    一.session简介 sesion也就是会话,Session对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整 ...

  6. UVAlive 6756 Increasing Shortest Path

    We all love short and direct problems, it is easier to write, read and understand the problem statem ...

  7. Xshell实现Windows和使用跳板机跳转的远程Linux互传文件

    适用于Linux CentOS版本,本地电脑是Win10版本 查询Linux版本: $lsb_release -a $cat /etc/issue 1.使用Xshell 连接上服务器 2.安装文件传输 ...

  8. form表单,登录用户,密码,按钮,提交、重置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Python 循环列表删除元素的注意事项

    错误示范: class Solution: def removeElement(self, nums, val: int) -> int: for i, num in enumerate(num ...

  10. runltp出现问题 [

    runltp 623行: if [ "$?" == "0" ]; then 对[解析出了问题. 我灵机一动,是不是sh的问题. which sh /bin/sh ...