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

原创 2016年05月31日 16:25:14

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

/* When true, the layer is rendered as a bitmap in its local coordinate 
 * space ("rasterized"), then the bitmap is composited into the 
 * destination (with the minificationFilter and magnificationFilter 
 * properties of the layer applied if the bitmap needs scaling). 
 * Rasterization occurs after the layer's filters and shadow effects 
 * are applied, but before the opacity modulation. As an implementation 
 * detail the rendering engine may attempt to cache and reuse the 
 * bitmap from one frame to the next. (Whether it does or not will have 
 * no affect on the rendered output.) 
 * 
 * When false the layer is composited directly into the destination 
 * whenever possible (however, certain features of the compositing 
 * model may force rasterization, e.g. adding filters). 
 * 
 * Defaults to NO. Animatable. */  
  
@property BOOL shouldRasterize;  
  
/* The scale at which the layer will be rasterized (when the 
 * shouldRasterize property has been set to YES) relative to the 
 * coordinate space of the layer. Defaults to one. Animatable. */  
  
@property CGFloat rasterizationScale;  

当shouldRasterize设成true时,layer被渲染成一个bitmap,并缓存起来,等下次使用时不会再重新去渲染了。实现圆角本身就是在做颜色混合(blending),如果每次页面出来时都blending,消耗太大,这时shouldRasterize = yes,下次就只是简单的从渲染引擎的cache里读取那张bitmap,节约系统资源。

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


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

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
  • 2837

IOS7 导航栏适配--translucent属性设置的问题

iOS7及以上版本有改动,UITabBar类添加了一个translucent属性,UINavigationBar类中的translucent属性也默认修改为YES。 也就是说默认使用了这两个bar之后...
  • G_eorge
  • G_eorge
  • 2016年04月13日 15:43
  • 14944

Inno Setup使用说明

Inno Setup 使用说明   2011-06-07 10:44:28|  分类: 默认分类 |  标签:setup  inno  安装  程序  常量  |举报|字号 订阅      一.介绍 ...
  • zzwu
  • zzwu
  • 2016年07月24日 16:00
  • 1847

【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果

这里的动画效果指的是界面切换的动画效果,我们常见的又淡入淡出,右出左进等等,当然还有一些高级动画,这种动画适合游戏类的,对于一般APP会显得太花哨。...
  • wsb200514
  • wsb200514
  • 2014年09月29日 13:33
  • 2019

iOS开发~CocoaPods使用说明和扩展

CocoaPods的详细安装、使用和更新、删除第三方库
  • Future_One
  • Future_One
  • 2017年03月27日 20:16
  • 1111

iOS开发帮助文档使用说明

iOS开发帮助文档可以在苹果开发者中心在线查看,也可以在Xcode本地查看。 苹果开发中心在线查看示例图: 传送门:https://developer.apple.com/library/io...
  • u013367958
  • u013367958
  • 2017年04月21日 10:01
  • 220

iOS开发之CocoaPods使用说明

CocoaPods是一个用来帮助我们管理第三方依赖库的工具,自己用过,记录下使用过程 一、首先要安装CocoaPods CocoaPods是用Ruby实现的,要用使用它首先需要有Ruby的环境,但...
  • yj229201093
  • yj229201093
  • 2016年01月14日 19:23
  • 289

iOS开发-工具:用CornerStone配置SVN,HTTP及svn简单使用说明

转自:http://my.oschina.net/joanfen/blog/194491 CornerStone是Mac OS X系统下非常好用的一款svn工具,至XCode5之后,本人觉得XCo...
  • sinat_31872425
  • sinat_31872425
  • 2015年12月07日 09:18
  • 171

iOS开发--CocoaPods的安装和使用说明

一、概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。 二、...
  • wlm0813
  • wlm0813
  • 2016年04月06日 22:46
  • 669

iOS开发中CALayer的详细使用说明

在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画、关键帧动画、动画...
  • jhq1990
  • jhq1990
  • 2016年01月31日 17:17
  • 885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios开发中view.layer.shouldRasterize = YES 的使用说明
举报原因:
原因补充:

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