当前位置: 首页 > news >正文

网站建设种类品牌网站建设公司哪好

网站建设种类,品牌网站建设公司哪好,飞机免费代理ip,招标网哪个好并且免费文章目录 离屏渲染UIView和CALayer关系GPU屏幕渲染有两种方式:产生离屏渲染的原因#xff1a;既然离屏渲染这么耗性能,为什么有这套机制呢?什么情况会离屏渲染#xff1f;既然离屏渲染这么不好#xff0c;为什么我们还要强制开启呢#xff1f;如何避免离屏渲染#xff1f… 文章目录 离屏渲染UIView和CALayer关系GPU屏幕渲染有两种方式:产生离屏渲染的原因既然离屏渲染这么耗性能,为什么有这套机制呢?什么情况会离屏渲染既然离屏渲染这么不好为什么我们还要强制开启呢如何避免离屏渲染1.圆角的优化2.shadow 离屏渲染 UIView和CALayer关系 UIView继承自UIResponder可以处理系统传递过来的事件如UIApplication、UIViewController、UIView以及所有从UIView派生出来的UIKit类。每个UIView内部都有一个CALayer提供内容的绘制和显示并且作为内部RootLayer的代理视图。CALayer继承自NSObject类负责显示UIView提供的内容contents。CALayer有三个视觉元素背景色、内容和边框其中内容的本质是一个CGImage。 GPU屏幕渲染有两种方式: 1.On-Screen Rendering (当前屏幕渲染) 指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区进行。 2.Off-Screen Rendering (离屏渲染) 指的是在GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作。 当前屏幕渲染不需要额外创建新的缓存也不需要开启新的上下文相对于离屏渲染性能更好。但是受当前屏幕渲染的局限因素限制(只有自身上下文、屏幕缓存有限等)当前屏幕渲染有些情况下的渲染解决不了的就使用到离屏渲染。 产生离屏渲染的原因 苹果系统不能够一次的去处理视图需要一张一张的去处理视图那么就会需要开辟一个离屏缓存区去存储一张张处理好的视图开辟的这个离屏缓存区就会导致离屏渲染。 既然离屏渲染这么耗性能,为什么有这套机制呢? 有些效果被认为不能直接呈现于屏幕而需要在别的地方做额外的处理预合成。图层属性的混合体没有预合成之前不能直接在屏幕中绘制所以就需要屏幕外渲染。 什么情况会离屏渲染 为图层设置遮罩layer.mask将图层的layer.masksToBounds / view.clipsToBounds属性设置为true将图层layer.allowsGroupOpacity属性设置为YES和layer.opacity小于1.0为图层设置阴影layer.shadow *。为图层设置光栅化 layer.shouldRasterizetrue具有layer.cornerRadiuslayer.edgeAntialiasingMasklayer.allowsEdgeAntialiasing的图层 当然也不是所有的圆角都会导致离屏渲染文本任何种类包括UILabelCATextLayerCore Text等。使用CGContext在drawRect :方法中绘制大部分情况下会导致离屏渲染甚至仅仅是一个空的实现。 既然离屏渲染这么不好为什么我们还要强制开启呢 当一个图像混合了多个图层每次移动时每一帧都要重新合成这些图层十分消耗性能。当我们开启光栅化后会在首次产生一个位图缓存当再次使用时候就会复用这个缓存。但是如果图层发生改变的时候就会重新产生位图缓存。所以这个功能一般不能用于 UITableViewCell中cell的复用反而降低了性能。最好用于图层较多的静态内容的图形。而且产生的位图缓存的大小是有限制的一般是2.5个屏幕尺寸。在100ms之内不使用这个缓存缓存也会被删除。所以我们要根据使用场景而定。 如何避免离屏渲染 1.圆角的优化 1使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角 2、使用CAShapeLayer和UIBezierPath设置圆角 总的来说就是用CAShapeLayer的内存消耗少渲染速度快建议使用优化方案2。 2.shadow 对于shadow如果图层是个简单的几何图形或者圆角图形我们可以通过设置shadowPath来优化性能能大幅提高性能。示例如下 mageView.layer.shadowColor[UIColorgrayColor].CGColor; imageView.layer.shadowOpacity1.0; imageView.layer.shadowRadius2.0; UIBezierPath *path[UIBezierPathbezierPathWithRect:imageView.frame]; imageView.layer.shadowPathpath.CGPath;我们还可以通过设置shouldRasterize属性值为YES来强制开启离屏渲染。其实就是光栅化Rasterization。
http://wiki.neutronadmin.com/news/438167/

相关文章:

  • 芜湖北京网站建设电商网站建设哪家好
  • django做的购物网站偃师网站
  • 三网合一网站建设方案网址创建
  • 哪些网站是做设计的wordpress的登录地址修改
  • 用php做网站后台做电商需要投入多少钱
  • php做用户登录网站海外销售工作难做吗
  • 网站导航结构joomla 网站 html 空
  • 怎么自己做网站链接制作wordpress分享
  • html5做网站导航仿制别人的竞价网站做竞价犯法吗
  • 建设网站需要专业上海的装修公司排名
  • 哪家公司建网站最好网站打开
  • 销售网站后台维护怎么做提升网站建设品质
  • 绍兴网站建设公司wordpress 需要会php
  • 免费网站建设域名陕西煤炭建设公司网站
  • 明星个人网站建设方案网站作业
  • 网站设计特点网站建设制作一个网站的费用
  • 怎么给公司免费做网站wordpress 内存
  • 大学英文网站建设中国免费域名申请网站
  • 包装模板网站太原seo
  • 怎么自己做淘宝网站吗网站建设和运营的课程
  • 织梦模板更新网站慈溪seo
  • 网站站seo教程企信网查不到公司怎么办
  • 沈阳做网站哪好笔记 发布 wordpress
  • 注册网站如何备案网站建设没有图片
  • 我做的网站打开慢怎么处理wordpress外链转内链
  • 桐城建设局网站怎么做外汇返佣的网站
  • 做一个网站的建设流程汕头seo优化培训
  • 图片网站制作南头网站建设
  • 网站建设的可研设计报告企业管理软件
  • 网站制作经典案例建立网站 优帮云