首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用drawRect绘制到我自己的UIView

使用drawRect方法可以在自定义的UIView上进行绘制操作。drawRect是UIView的一个方法,它是在视图需要重绘时被调用的。

在drawRect方法中,我们可以使用各种绘图API来绘制图形、文本、图像等。常用的绘图API包括UIKit和Core Graphics框架提供的方法。

绘制过程一般包括以下几个步骤:

  1. 获取当前绘制上下文:可以通过UIGraphicsGetCurrentContext()方法获取当前的绘图上下文。
  2. 设置绘制属性:可以设置线条颜色、填充颜色、线条宽度等绘制属性。
  3. 绘制图形:可以使用绘图API绘制各种图形,如矩形、圆形、椭圆、路径等。
  4. 绘制文本:可以使用NSString的drawInRect:withAttributes:方法绘制文本。
  5. 绘制图像:可以使用UIImage的drawInRect:方法绘制图像。

绘制完成后,系统会自动将绘制的内容显示在UIView上。

drawRect方法的调用时机由系统决定,一般在以下情况下会触发重绘:

  • 视图第一次显示时;
  • 视图的尺寸发生变化时;
  • 调用视图的setNeedsDisplay或setNeedsDisplayInRect:方法时。

drawRect方法的重绘效率较低,因此在实际开发中,应尽量避免频繁调用setNeedsDisplay方法,以提高性能。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各种业务需求。产品介绍
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍
  • 腾讯云云数据库MySQL版(TencentDB for MySQL):提供高性能、可扩展的关系型数据库服务。产品介绍
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,帮助连接和管理物联设备。产品介绍

以上是腾讯云提供的一些与云计算相关的产品,可以根据具体需求选择适合的产品来支持开发工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UI篇-VC生命周期以及UIViewlayoutSubviews和drawRect方法

前言 看似常用UIView,其实有很多不经常用到方法和应该注意机制,我是一个喜欢打破砂锅问到底的人,可是很多问题在网上搜索不到答案,大部分博客都是转载相同东西,所以我自己就新建 Dome,实际测试了一些数据...: ** 在使用 VC绘制UI时候,它不同于 UIViewUIView中 init方法调用后,UIView就已经绘制好(初始化好了)。...UIView中方法执行顺序大概是这样: init 方法 >>属性set/get 方法>> layoutSubviews(当然是要达到触发条件)>>drawRect使用得当可以在View调用中起到很好效果...以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、 **若使用UIView绘图,只能在drawRect:方法中获取相应contextRef并绘图。...** 2、**若使用calayer绘图,只能在drawInContext: 中(类似鱼drawRect绘制**,或者在delegate中相应方法绘制

1.8K30

IOS开发系列——UIView专题之三:自定义绘制篇【整理,部分原创】

3UIView重绘机制 3.1DrawRect机制 3.1.1简介 iOS绘图操作是在UIViewdrawRect方法中完成,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView...(调用setNeedsDisplay会自动调用drawRect) 在UIView中,重写drawRect: (CGRect) aRect方法,可以自己定义想要画图案.且此方法一般情况下只会画一次.也就是说这个...以上1,2推荐;而3,4不提倡 1、若使用UIView绘图,只能在drawRect:方法中获取相应contextRef并绘图。...2、若使用calayer绘图,只能在drawInContext:中(类似鱼drawRect绘制,或者在delegate中相应方法绘制。...tid=7085 主题: drawRect中,如何清除之前所绘制内容 http://www.cocoachina.com/bbs/read.php?

98530

谈谈对drawRect理解

写在前面 UIView对于iOS开发来讲,再熟悉不过了。也正是因为这一点,我们可能会忽略UIView一些特有方法理解和使用。今天,笔者主要整理一下对drawRect方法理解和使用。...当子类使用Core Graphics和UIKit绘制视图内容时就需要在该方法中添加绘制代码。 drawRect简介 drawRect方法在UIView使用上起着十分关键作用。...该方法定义在UIView(UIViewRendering)分类里面,望文生义,该方法完成视图绘制。...若使用UIView绘图,只能在drawRect:方法中获取绘制视图contextRef。...; 若使用CALayer绘图,只能在drawInContext :绘制,或者在delegate方法中进行绘制,然后调用setNeedDisplay方法实现最终绘制; 若要实时画图,不能使用gestureRecognizer

1.7K20

iOS动画-CALayer基础知识

时,其内部会自动创建CALayer图层对象(即UIView关联图层),UIView调用drawRect:方法进行绘图,并且将所有的内容绘制自己图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了...给contents赋值CGImage值并不是唯一设置寄宿图方法,我们也可以直接使用Core Graphics直接绘制寄宿图,即通过继承UIView并实现-drawRect:方式。...-drawRect:方法是UIView没有默认实现方法,因为寄宿图并不是必须;但如果UIView检测到此方法被实现了,此方法会被自动调用,然后我们就可以在其中使用Core Graphics绘制自己需要内容了...自定义绘制寄宿图1.png 特别注意1:如果没有自定义绘制任务不需要寄宿图,就不要在子类中写一个空-drawRect:方法,否则会造成CPU资源和内存浪费; 特别注意2:如果我们将绘制过程角度参数改为动态...主动绘制 我们需要显式调用-display方法;这不同于UIView,当图层显示到屏幕上时,CALayer不会自动重绘它内容,CALayer把重绘决定权交给了开发者; 2.绘制特点 尽管没有使用

1.8K50

setNeedsDisplay看我就懂!

前言: setNeedsDisplay异步执行。它会自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以绘制了。...一、着手 我定义了一个UIView子类,用于演示使用setNeedsDisplay,这个CircleView子类会在draw(_ rect: CGRect)方法内简单绘制一个圆,它有一个颜色属性,这是我们将要设置用来改变圆颜色...一般来说,使用框架控件,当您设置属性(如显示标签或值)时,您将会使用该属性,这样会导致重新绘制控件,因为系统会实现对控件drawRect方法调用。...而我们自定义了自己UIView子类,所以我们需要处理影响显示控件更新。在改变颜色情况下,当然需要我们自己控制重新绘制。...drawRectUIView子类时,需要在需要重绘时指示给系统。

1.2K60

iOS layout相关方法

layoutSubviews 5.旋转Screen会触发父UIViewlayoutSubviews事件 6.改变UIView大小时候也会触发父UIViewlayoutSubviews事件 在苹果官方文档中强调...drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。...以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、若使用UIView绘图,只能在drawRect:方法中获取相应contextRef并绘图。...2、若使用calayer绘图,只能在drawInContext: 中(类似于drawRect绘制,或者在delegate中相应方法绘制。...receiver当前size,返回一个适合size sizeToFit可以被手动直接调用 sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己 假设 let

1K10

IOS渲染流程之提交图层数据至RenderThread进程

代表Bitamp,渲染流程后Bitmap被存储在content属性中(这个bitmpa也叫back store)UIView代表视图树对应CALayer对应图层树 分离UIView和CALayer目的在于...对应于不同交互UIView(负责响应用户交互,管理视图用于显示正确图层树)是不同,而CALayer(图层树)只负责提供Bitmap用于CoreAnimation框架读取组合,CoreAnimation...渲染流程基于顶点,基于纹理(直接提供图片): 1.使用图片纹理:contents属性配置 数据类型为id而不是CGImage是为了适配MAC OS系统,MAC OS系统中定义CFImage和NSImage...都起作用 2.自己基于顶点来处理数据,手动绘制 顶点需要自己计算纹理,光照信息用于片段主色器显示颜色 UIView中有一个drawRect方法用于实现自定义绘制,由Core Graphics处理绘制寄宿图..., 实现原理:drawRect是CALayer方法,CALayer中有一个delegete代理属性,UIView实现了这个代理协议,因此CALayer请求代理(UIView)得到数据,代理可以设置

43910

图形

1、UIView+drawRect+UIBezierPath 重写drawRect能够自动生成Context,所以可以在drawRect方法里面画图形 - (void)drawRect:(CGRect...CoreGraphics绘制图形A,想要使用UIKit绘制完全不同图形B,此时就希望保存当前绘图context及已绘制内容。...使用场景是: 当前正在绘制图形A。 使用UIGraphicsBeginImageContext将旧绘图context入栈,创建新绘图context并使用绘制图形B。...视图即UIView,并不是直接显示在屏幕上,而是在创建视图对象时候视图对象会自动创建一个层,而视图对象把要显示东西绘制在层上,待到需要显示时硬件将所有的层拷贝,然后按Z轴高低合成最终显示结果...:,并传入刚才准备好上下文 viewdrawLayer:inContext:方法内部又会调用viewdrawRect:方法 view就可以在drawRect:方法中实现绘图代码, 所有东西最终都绘制

1.1K10

绘图-几个较复杂统计图案例实现分析

小圆点动画 根据数据源,在每一数据点处放上一个自定义UIView,在此自定义UIViewdrawRect绘制圆形图形,并且设置 shape.layer.opacity = 0;,即让这些小圆点(...在使用drawRect:重绘页面时注意首先移除已有的图层maskLayer 同时做动画。...曲线图弹性动画.gif 整个效果实现过程是这样: 触发UIView drawRect 方法; [_lineGraph setNeedsDisplay]; **使用 setNeedsDisplay...绘制关键步骤: 使用for循环在 drawRect方法中绘制每一个扇形(上篇文章已将讲过),因为环外标注,所以圆环需要小些,否则外环线上文字绘制起来有可能空间不够。...,还有一个十字线,这个只要会画线段就会画十字线,这个也不多说了; 这些掌握了之后就可以绘制专属自己K线图了,其他都是一些细节小问题,CGContextRef还有很多用法,有兴趣自己可以找度娘,接下来附上我最终绘制结果

1.4K20

iOS学习——Quartz2D学习(1)

他是一个二维绘图引擎,同时支持iOS和Mac系统 2、Quartz2D能完成工作   画基本线条,绘制文字,图片,截图,自定义UIView. 3、Quartz2D在开发中价值   当我们控件样式极其复杂时...相关联.才能将内容绘制到View上面.在DrawRect方法方法里 步骤: 1.要先自定定UIView 2.实现DrawRect方法 3.在DrawRect方法中取得跟View相关联上下文...DrawRect是系统自己调用, 它是当View显示时候自动调用. 8、画线(基本步骤描述)  //1.获取跟View相关联上下文 CGContextRef ctx = UIGraphicsGetCurrentContext...在调用这些方法之前,我们要进行一些其他任务去确保正确绘制path,以及path设置。 使用UIColor类方法去stroke和fill想要颜色。...使用stroke和fill方法进行渲染时,不需要我们手动去获取上下文了,这两个方法会自定获取view上下文,然后在该view上绘制渲染path对应路径,stroke是绘制线,fill是填充path对应封闭区域

1.1K20

【IOS开发基础系列】UIView专题

重写这个方法可以用来选择忽略一些他们不关心对象 drawRect:     在接收者视图中绘制矩形 - (void)drawRect:(CGRect)rect 参数 rect     一个定义需要绘制矩形...使用UIGraphicsGetCurrentContext方法去获取当前图形内容用来绘制,坐标原点在左上角。不要保留图片内容当他可以被drawRect:这个方法调用。...(调用setNeedsDisplay会自动调用drawRect)         在UIView中,重写drawRect: (CGRect)aRect方法,可以自己定义想要画图案.且此方法一般情况下只会画一次...2、若使用calayer绘图,只能在drawInContext: 中(类似鱼drawRect)绘制,或者在delegate中相应方法绘制。...pointInside:withEvent:方法,如果pointInside返回YES,则表明触摸事件发生在我自己内部,则会遍历自己所有Subview去寻找最小单位(没有任何子view)UIView

36730

iOS CPU异步绘制流程

为了减轻GPU负担,我们有时也需要依靠CPU来进行协助绘制,这篇文章主要讲解CPU进行异步绘制流程,部分内容摘录自iOS探索:UI视图之卡顿、掉帧及绘制原理 UIView绘制原理(CPU绘制)...UIView绘制流程以及异步绘制.png 当我们调用[UIView setNeedsDisplay]这个方法时,其实并没有立即进行绘制工作,系统会立刻调用CALayer同名方法,并且会在当前layer...drawLayer:inContext方法,如果有实现,就会创建一个空寄宿图和Core Craphics绘制上下文,为绘制寄宿图做准备,然后会在一个合适时候调用一个我们非常熟悉方法[UIView...drawRect:]来获取寄宿图内容。...[UIView drawRect:]这个方法默认是什么都不做,系统给我们开这个口子是为了让我们可以再做一些其他绘制工作 无论是哪个分支,最终都会由CALayer上传对应backing store

66950

iOS 之 异步绘制原理

异步绘制产生背景 ---- UIView 中有一个 CALayer 属性,负责 UIView 具体内容显示。...解决方案使用异步绘制就是: 把 UIView 显示内容(包括 UILabel 文字,UIImageView 图片等)绘制生成 bitmap 在子线程完成。...在 UIView 中 layer.delegate 就是 UIView 本身,UIView 并没有实现 displayLayer: 方法,所以进入系统绘制流程,我们可以通过实现 displayLayer...然后在合适时机回调代理,调用 drawRect 默认操作是什么都不做(而之所以有这个接口,就是为了让我们在系统绘制之后,还可以做些自定义绘制工作)。...面试考点 ---- ▐ 我们调用 [UIView setNeedsDisplay] 方法时候,不会立马发送对应视图绘制工作,为什么?

2.9K30

UIView和CALayer

CALayer作为一个低级,可以承载绘制内容底层对象出现在该框架中。 CALayer是用来绘制内容,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。...作用机制 当UIView需要显示时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制自己图层上(CALayer上),系统将图层拷贝到屏幕上,完成UIView显示。...UIView侧重于对显示内容管理,CALayer侧重于对内容绘制UIView和CALayer是相互依赖关系。...UIView依赖与CALayer提供内容,CALayer依赖UIView提供容器来显示绘制内容。...归根到底CALayer是这一切基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊CALayer实现,添加了响应事件能力。

93210

绘图-Core Graphics

iOS有分多种图形上下文,其中UIView自带提供drawRect:方法中通过UIGraphicsGetCurrentContext获取,还有专门为图片处理context,UIGraphicsBeginImageContext...简述 绘图步骤:(在drawRect函数中) 1.获取绘图上下文 2.创建并设置路径 3.将路径添加到上下文 4.设置上下文状态 5.绘制路径 6.释放路径 在使用Core Graphics...当你子类化了一个UIView并实现了自己drawRect:方法后,一旦drawRect:方法被调用,Cocoa就会为你创建一个图形上下文,此时你对图形上下文所有绘图操作都会显示在UIView上。...或CGContextRef配合使用后才可以展示出图形,它只是负责绘制路径path. ---- 推荐好文章: 打造自己“美图秀秀” 关于Core Image 看这里 ---- ?...效果.gif 本文考虑到简洁就不上代码了,具体代码实现效果可以到我GitHub去下载查看,喜欢的话,请star 一下。

1.5K30

iOS技术面试题及答案

微信截图_20200911135347.png 一、如何绘制UIView? 绘制一个UIView最灵活方法就是由它自己完成绘制。...实际上你不是绘制一个UIView,而是子类化一个UIView并赋予绘制自己能力。当一个UIView需要执行绘制操作时,drawRect:方法就会被调用,覆盖此方法让你获得绘图操作机会。...当drawRect:方法被调用,当前图形上下文也被设置为属于视图图形上下文,你可以使用Core Graphic或者UIKit提供方法将图形画在该上下文中。...好处: 1.使用多线程可以把程序中占据时间长任务放到后台去处理,如图片,视频下载; 2.发挥多核处理器优势,并发执行让系统运行更快,更流畅,用户体验更好; 缺点: 1.大量线程降低代码可读性...十、生成二维码步骤 1.使用CIFilter滤镜类生成二维码 2.对生成二维码进行加工,使其更清晰 3.自定义二维码背景色、填充色 4.自定义定位角标 5.在二维码中心插入小图片 总结 以上就是这篇文章全部内容了

82201
领券