美文网首页
iOS drawRect内存问题

iOS drawRect内存问题

作者: Funcy1Day | 来源:发表于2017-05-16 13:50 被阅读79次

http://bihongbo.com/2016/01/03/memoryGhostdrawRect/

在iOS系统中所有显示的视图都是从基类UIView继承而来的,同时UIView负责接收用户交互。但是实际上你所看到的视图内容,包括图形等,都是由UIView的一个实例图层属性来绘制和渲染的,那就是CALayer。


CALayer是UIView的内部实现细节。

CALayer的contents属性。contents默认可以传一个id类型的对象,但是只有你传CGImage的时候,它才能够正常显示在屏幕上。所以最终我们的图形渲染落点落在contents身上如图。

contents也被称为寄宿图,除了给它赋值CGImage之外,我们也可以直接对它进行绘制,绘制的方法正是这次问题的关键,通过继承UIView并实现-drawRect:方法即可自定义绘制。-drawRect:方法没有默认的实现,因为对UIView来说,寄宿图并不是必须的,UIView不关心绘制的内容。如果UIView检测到-drawRect:方法被调用了,它就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以contentsScale(这个属性与屏幕分辨率有关,我们的画板程序在不同模拟器下呈现的内存用量不同也是因为它)的值。

渲染快速。CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。

高效使用内存。一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论有多大,都不会占用太多的内存。

不会被图层边界剪裁掉。

不会出现像素化。

相关文章

  • iOS drawRect内存问题

    http://bihongbo.com/2016/01/03/memoryGhostdrawRect/ 在iOS系...

  • app 性能优化

    UIKit性能调优实战讲解内存恶鬼drawRect关于性能的一些问题iOS应用性能调优的25个建议和技巧Colle...

  • iOS开发之drawRect内存优化

    文章预读 内存恶鬼drawRect - 谈画图功能的内存优化 根据文中提到的解决内存问题有这重要的两点:①尽量不用...

  • 重写drawRect导致的内存问题

    一、绘画只在UIView中执行,需要新建UIView的子类 二、重写drawRect会导致内存激增我们在 UIVi...

  • iOS/OS X 内存管理(二):借助工具解决内存问题

    iOS/OS X 内存管理(二):借助工具解决内存问题 iOS/OS X 内存管理(二):借助工具解决内存问题

  • 关于drawRect内存暴增

    关于drawRect内存暴增的总结,在新建的view里重写了- (void)drawRect:(CGRect)re...

  • IOS drawrect方法小问题

    今天在项目中用drawRect画了一个三角型用于标示section是否折叠,如下图 当折叠的时候会有一个rotat...

  • DrawRect内存飙升

    从很多地方听到过一个概念,重写 方法会造成内存飙升的问题,实践出真知,试了才知道。场景如下:一个简易画板view,...

  • 内存恶鬼drawRect

    可直接点击以下链接原文:http://bihongbo.com/2016/01/03/memoryGhostdra...

  • 绘图1

    iOS中绘图的概念 iOS iOSopenGL Quartz UIView DrawRect 1个像素 =...

网友评论

      本文标题:iOS drawRect内存问题

      本文链接:https://www.haomeiwen.com/subject/yudlxxtx.html