ios开发中view.layer.shouldRasterize = YES 的使用说明

转载 2015年11月19日 12:05:34

在做一个NavigationController push 子页面时,发现push和pop时很卡,研究了一大阵子后,发现在子页面里影响UI流畅的只有UIImageView的圆角设置;然后我就关闭了圆角,重新运行果然流畅多了。但是产品的需求必须加圆角,没办法,去stackoverflow找方案,发现方法都大同小异,只不过是绘制上做一些优化。后来查看layer的头文件,最后找到了一个牛B的属性:

  1. /* When true, the layer is rendered as a bitmap in its local coordinate 
  2.  * space ("rasterized"), then the bitmap is composited into the 
  3.  * destination (with the minificationFilter and magnificationFilter 
  4.  * properties of the layer applied if the bitmap needs scaling). 
  5.  * Rasterization occurs after the layer's filters and shadow effects 
  6.  * are applied, but before the opacity modulation. As an implementation 
  7.  * detail the rendering engine may attempt to cache and reuse the 
  8.  * bitmap from one frame to the next. (Whether it does or not will have 
  9.  * no affect on the rendered output.) 
  10.  * 
  11.  * When false the layer is composited directly into the destination 
  12.  * whenever possible (however, certain features of the compositing 
  13.  * model may force rasterization, e.g. adding filters). 
  14.  * 
  15.  * Defaults to NO. Animatable. */  
  16.   
  17. @property BOOL shouldRasterize;  
  18.   
  19. /* The scale at which the layer will be rasterized (when the 
  20.  * shouldRasterize property has been set to YES) relative to the 
  21.  * coordinate space of the layer. Defaults to one. Animatable. */  
  22.   
  23. @property CGFloat rasterizationScale;  
当shouldRasterize设成true时,layer被渲染成一个bitmap,并缓存起来,等下次使用时不会再重新去渲染了。实现圆角本身就是在做颜色混合(blending),如果每次页面出来时都blending,消耗太大,这时shouldRasterize = yes,下次就只是简单的从渲染引擎的cache里读取那张bitmap,节约系统资源。

额外收获:如果在滚动tableView时,每次都执行圆角设置,肯定会阻塞UI,设置这个将会使滑动更加流畅。

ios开发中view.layer.shouldRasterize = YES 的使用说明

在做一个NavigationController push 子页面时,发现push和pop时很卡,研究了一大阵子后,发现在子页面里影响UI流畅的只有UIImageView的圆角设置;然后我就关闭了圆角...
  • u012951123
  • u012951123
  • 2014年04月02日 11:15
  • 11715

ios7之后的适配属性讲解edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars等

ios7版本之后,增加了很多新的属性,其中包括页面起始点从屏幕最左上角(0,0)点开始,这给页面适配带来了很大问题。首先说说纯代码页面: edgesForExtendedLayout 这个属性我们字面...
  • zyzxrj
  • zyzxrj
  • 2015年08月21日 18:11
  • 7803

view.layer.shouldRasterize = YES(光栅化)的使用 及图片性能整理

/* When true, the layer is rendered as a bitmap in its local coordinate * space ("rasterized")...
  • lg767201403
  • lg767201403
  • 2016年03月23日 10:42
  • 3016

iOS ——Animation 中的事务CATransaction

理解 CALayer的“Animatable”属性的设置都应该属于某一个CATransaction事务,CATransaction的作用是保证多个“Animatable”的变化同时进行。也就是...
  • ci915194561
  • ci915194561
  • 2015年11月29日 22:41
  • 1371

linux shell中yes_or_no()函数返回值的问题

在看Linux 程序设计的时候,碰到下面的问题; #!/bin/sh yes_or_no() { echo "Is you name $* ?" while true do ...
  • u010280307
  • u010280307
  • 2016年11月25日 23:11
  • 808

用SecurAble检测cpu是否支持Intel VT虚拟化技术的LOCKED ON,LOCKED OFF,YES,NO使用说明

以下是总结网友的文章。WIN 7发布后,很多客户对WIN7的XP Mode感兴趣。一、BIOS的VT选项来源BIOS的VT选项来自英特尔,不是主板厂商可以随便删除的。早期英特尔支持VT的桌面级CPU很...
  • jackljf
  • jackljf
  • 2011年01月22日 11:09
  • 2904

linux中ONBOOT=yes的含义

在/etc/sysconfig/network-scripts/ifcfg-eth0(确认ONBOOT=yes),其中eth0是设备名 ONBOOT是指明在系统启动时是否激活网卡,只有在激活状态的网...
  • u012110719
  • u012110719
  • 2014年12月30日 12:45
  • 4598

关于YES、NO和TRUE、FLASE的区别

一般编程我们都默认非零值就是TRUE,为零时FALSE。   那么在Objective-C中,又出现了YES、NO。咋回事呢。是酱紫滴,OC中用一个字节,即8位来表示BOOL值,也就是取一个数的低八...
  • shagua_nan
  • shagua_nan
  • 2016年03月13日 16:10
  • 1856

Yes yes yes yes yes yes

Yes yes yes yes yes yes
  • u012998249
  • u012998249
  • 2013年11月29日 17:48
  • 84

python3正则模块中的(?(id)yes|no)构造

1.问题 最近需要用python处理一些文档,其中用到正则表达式,发现一段时间不看已经忘得的差不多了,便又从网上翻看一些教程。在此推荐Python正则表达式指南,写的非常全面,很适合新手入门。在使用...
  • yf18235140059
  • yf18235140059
  • 2017年12月15日 17:40
  • 49
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios开发中view.layer.shouldRasterize = YES 的使用说明
举报原因:
原因补充:

(最多只允许输入30个字)