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

如何做网站的教程视频网站关键词怎么优化排名

如何做网站的教程视频,网站关键词怎么优化排名,免费空间建站网站推荐,项目实施方案计划书文章目录 离屏渲染UIView和CALayer关系GPU屏幕渲染有两种方式:产生离屏渲染的原因:既然离屏渲染这么耗性能,为什么有这套机制呢?什么情况会离屏渲染?既然离屏渲染这么不好,为什么我们还要强制开启呢?如何避免离屏渲染&#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属性设置为YESlayer.opacity小于1.0
  • 为图层设置阴影(layer.shadow *)。
  • 为图层设置光栅化 layer.shouldRasterize=true
  • 具有layer.cornerRadiuslayer.edgeAntialiasingMasklayer.allowsEdgeAntialiasing的图层
    当然也不是所有的圆角都会导致离屏渲染
  • 文本(任何种类,包括UILabelCATextLayerCore Text等)。
  • 使用CGContextdrawRect :方法中绘制大部分情况下会导致离屏渲染,甚至仅仅是一个空的实现。

既然离屏渲染这么不好,为什么我们还要强制开启呢?

当一个图像混合了多个图层,每次移动时,每一帧都要重新合成这些图层,十分消耗性能。当我们开启光栅化后,会在首次产生一个位图缓存,当再次使用时候就会复用这个缓存。但是如果图层发生改变的时候就会重新产生位图缓存。所以这个功能一般不能用于 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.shadowOpacity=1.0;
imageView.layer.shadowRadius=2.0;
UIBezierPath *path=[UIBezierPathbezierPathWithRect:imageView.frame];
imageView.layer.shadowPath=path.CGPath;

我们还可以通过设置shouldRasterize属性值为YES来强制开启离屏渲染。其实就是光栅化(Rasterization)。

http://www.hkea.cn/news/938748/

相关文章:

  • 旅游网站图片营销公司排名
  • 做服务器的网站都有哪些搜狗关键词排名此会zjkwlgs
  • php动态网站开发 唐四薪 答案b站引流推广网站
  • 长沙3天2晚自由行攻略论述搜索引擎优化的具体措施
  • 外汇局网站做结汇申报被逆冬seo课程欺骗了
  • 网站运营配置免费网站在线观看人数在哪直播
  • 什么网站做一手房好系统优化的例子
  • wordpress 插入wordseo排名点击工具
  • 网站推广易网宣seo的主要分析工具
  • 安徽网站定制最大免费广告发布平台
  • 怎么查网站有没有做404公司宣传网页怎么做
  • 靠谱营销网站开发选哪家seo的优点和缺点
  • 企业网站建设论文文献综述百度推广的广告真实可信吗
  • 企业网站优化方式广州最新消息今天
  • 旅游网站开发的意义seo优化方案案例
  • 山东做网站的公司seo数据分析哪些方面
  • 做网站用哪几个端口 比较好百度贴吧官网网页
  • 弹幕网站是怎么做的百度在线翻译
  • 独立网站域名代发关键词包收录
  • 如何建立门户网站百度可以发布广告吗
  • 网站开发毕设文献郑州网站优化顾问
  • 青海建设银行的官方网站自己制作网页的网站
  • 网站建设的图片叠加步骤过程2021年搜索引擎排名
  • 网站链接到邮箱怎么做搜索引擎推广试题
  • 十堰城市建设网站制作自己的网站
  • 传媒网站建设公司深圳百度seo优化
  • 公司需要网站 该怎么做公司推广咨询
  • 高中男女做那个视频网站seo做的好的网站
  • 网站建设 摄影服务上海seo网站排名优化公司
  • 网页设计中html代码seo博客网站