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

使用CAGradientLayer作为背景,同时使用drawRect绘制上下文:

代码语言:python
复制
# 使用CAGradientLayer作为背景
background_layer = CAGradientLayer()
background_layer.frame = self.view.bounds
background_layer.colors = [UIColor.clear.cgColor, UIColor.blue.cgColor]
self.view.layer.addSublayer(background_layer)

# 使用drawRect绘制上下文
context = UIGraphicsGetCurrentContext()
context?.setFillColorSpace(CGColorSpace.init(name: CGColorSpace.displayP3)!)
context?.fill(CGRect(x: 0, y: 0, width: 200, height: 200))
context?.setStrokeColorSpace(CGColorSpace.init(name: CGColorSpace.displayP3)!)
context?.setLineCap(CGLineCap.round)
context?.setLineJoin(CGLineJoin.round)
context?.setLineWidth(1.0)
context?.setStrokeColor(UIColor.black.cgColor)
context?.stroke(CGRect(x: 0, y: 0, width: 200, height: 200))

以上代码演示了如何在上下文中使用drawRect方法绘制蓝色矩形,并在矩形中绘制一个白色的圆形。其中,CAGradientLayer被用作背景层,用于实现蓝色渐变效果。UIGraphicsGetCurrentContext()用于获取当前上下文,可以用于绘制各种图形。CGColorSpace用于设置颜色空间,以及绘制图形的颜色和线条颜色。CGLineCapCGLineJoinCGColorCGContextStrokeRect等用于绘制线条和图形。

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

相关·内容

iOS快速实现环形渐变进度条

前言进度条相信我们大家都不陌生,往往我们很多时候需要使用到圆形进度条。这篇文章给大家分享了利用ios如何快速实现环形进度条,下面来一起看看。...一:先制作一个不带颜色渐变的进度条自定义一个cycleview,在.m 中实现drawrect方法?...cgcontextstrokepath(ctx); //渲染 }因为drawrect方法只是在视图刚刚出现的时候执行一次,所以我们需要使用?...1[self setneedsdisplay];这个方法来进行重新绘制,在控制器里面加一个slider,滑动slider来控制进度变化?...环形渐变色线条的制作:第一步使用cashapelayer绘制出渐变层,应为它只能指定两个点之间进行渐变,所以这里需要两个cashapelayer,左边一个和右边一个,看一下效果图代码实现?

1.4K20

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

首先我们设置一个渐变图层 CAGradientLayer,下面是CAGradientLayer基本介绍 CAGradientLayer可以方便的处理颜色渐变,它有以下几个主要的属性: @property...UIBezierPath,把这个路径拼接上X坐标轴上的两个垂直投影点形成一个底部矩形状的封闭路径,把个路径作为渐变图层的path,并绘制一条比这个UIBezierPath顶部低一点的路径作为 渐变图层的遮罩图层...在使用drawRect:重绘页面时注意首先移除已有的图层maskLayer 同时做动画。...: 使用for循环在 drawRect方法中绘制每一个扇形(上篇文章已将讲过),因为环外的标注,所以圆环需要小些,否则外环线上的文字绘制起来有可能空间不够。...绘制,文字使用drawInRect: withAttributes绘制,字体左右对齐使用到以下方法: NSMutableParagraphStyle * paragraph = [[NSMutableParagraphStyle

1.4K20

iOS CALayer 简单介绍

当uiview需要显示在屏幕上时,会调用drawrect 方法进行绘制,并将所有的内容绘制在自己的层上,绘制完毕之后,系统会将层拷贝到屏幕上,于是uiview就显示了。...比如阴影,圆角,边框的颜色等、 项目中的具体使用 1.做渐变。...*gradientLayer2 = [CAGradientLayer layer]; gradientLayer2.colors = @[(__bridge id)[UIColor redColor...两种方式,一种是使用 n张图片去循环,这样的话对内存的开销比较大,不建议使用,第二种就是采用CALayer的相关属性  加上核心动画来实现:代码如下: //2.渐变转换为图形形成动画 CALayer...rotationAnimation2.repeatCount = MAXFLOAT; rotationAnimation2.beginTime = 0.8; //延时执行,注释掉动画会同时进行

62620

RenderingNG中关键数据结构及其角色

「原子步骤」 绘画块的有序列表,即显示项目组和属性树状态,作为渲染管道「图层化」Layerize步骤的输入数据 合成器帧是RenderingNG表示如何将栅格化的内容「拼接在一起」,并使用GPU有效地绘制它的数据格式...(从上到下依次排列) 绘制视图view背景 :drawRect命令绘制大小为800x600(视图大小),颜色为白色的区块 绘制#「blue」 背景: drawRect命令在「以视图为参照物」的位置为(0...,0)处绘制大小为100x100,颜色为「蓝色」的区块 绘制#「green」 背景:drawRect命令在「以视图为参照物」的位置为(8,8)处绘制大小为80x18,颜色为「绿色」的区块 处理#「green...(从上到下依次排列) 绘制视图view背景 :drawRect命令绘制大小为800x600,颜色为白色的区块 绘制#「green」 背景:drawRect命令在「以视图为参照物」的位置为(8,8)处绘制大小为...(从上到下依次排列) 绘制视图view背景 :drawRect命令绘制大小为800x600,颜色为白色的区块 绘制#「scrolll」 背景:drawRect命令在「以视图为参照物」的位置为(0,0)处绘制大小为

1.9K10

UI进阶13 Quartz2DQuartz2D

Quartz2D 什么是Quartz2D Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制...实现- (void)drawRect:(CGRect)rect方法,然后在这个方法中 取得跟当前view相关联的图形上下文 绘制相应的图形内容 利用图形上下文绘制的所有内容渲染显示到view上面...因为在drawRect:方法中才能取得跟view相关联的图形上下文 drawRect:方法在什么时候被调用?...CGContextRef CGPathRef CGContextStrokePath(ctx); …… drawRect:中取得的上下文drawRect:方法中取得上下文后,就可以绘制东西到view...上 View内部有个layer(图层)属性,drawRect:方法中取得的是一个Layer Graphics Context,因此,绘制的东西其实是绘制到view的layer上去了 View之所以能显示东西

65530

Quartz2D实战-画板工具

什么是Quartz2D Quartz2D的API是纯C语言的,它是一个二维绘图引擎,同时支持iOS和Mac系统。...Quartz2D的API来自于Core Graphics框架,数据类型和函数基本都以CG作为前缀:CGContextRef、CGPathRef等。...我们发现该方法是在视图即将展示的时候调用的,在这个方法中可以获取到上下文,将试图绘制到View上,其实每一个View内部都有一个layer属性,这个方法中就可以了取得一个layer,所以我们绘制的东西其实是绘制到...:时 图形上下文(Graphics Context) 保存绘图信息、绘图状态 决定绘制的输出目标(绘制到什么地方去?)...(输出目标可以是PDF文件、Bitmap或者显示器的窗口上) 相同的一套绘图序列,指定不同的Graphics Context,就可将相同的图像绘制到不同的目标上 绘制好的图形会保存到图像上下文中去,图像上下文中的绘制的图像又会显示在我们指定的输出目标当中

42240

绘图-视图遮罩MaskView的使用

---- 在UIView中有一个maskView属性,我们可以利用这个属性很方便的做出一些有意思的效果 这个属性在iOS8之后开始使用,用来表示视图的遮罩。 ?...(maskView跟view没有层次,可以理解maskView嵌在View里) 对于maskView与View重叠部分怎么显示 如果你的maskView 就是不起作用,请设置一下 maskView的背景颜色...效果1.png 途中圆圈羽化的边缘是用的图片填充,对CALayer内容的图片填充才有的羽化边缘的形状,才出的这样的效果,这其实是 maskLayer的使用了,具体可以参考我的代码查看。...可以结合CAGradientLayer用来实现颜色滚动渐变 初始化一个CAGradientLayer 设置一个CABasicAnimation 用来做CAGradientLayer 的动画 CAGradientLayer.mask.../f0c198e8de91 当然也可以结合CAShapeLayer用来实现自己想要的任意效果,layer的mask是种位掩蔽,在shapeLayer的填充区域中,alpha值不为零的部分,self会被绘制

2K20

图形

一、概念 Core Graphics Framework Core Graphics Framework 是一套基于C的API框架,使用了Quartz作为绘图引擎。...,Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等 使用UiKit,你只能在当前上下文中绘图,所以如果你当前处于UIGraphicsBeginImageContextWithOptions...函数或drawRect:方法中,你就可以直接使用UIKit提供的方法进行绘图。...如果你持有一个context:参数,那么使用UIKit提供的方法之前,必须将该上下文参数转化为当前上下文。...使用场景是: 当前正在绘制图形A。 使用UIGraphicsBeginImageContext将旧的绘图context入栈,创建新的绘图context并使用绘制图形B。

1.1K10

iOS开发CoreGraphics核心图形框架之五——Patterns模型的应用

在开发中,开发者经常会遇到这样的需求,将某个图片或者某个图形进行平铺作为界面的背景,当然iOS中有现成的方法来将图片转换为背景色进行背景的渲染,但是这种方式并不太灵活,例如背景花纹的着色,背景图片的平铺间距设置等需求都无法满足...Patterns可以理解为一个模型单元,即花纹背景中的一个花纹单元,开发者可以自定义这个单元的绘制内容,一旦创建了CGPatternRef引用,开发者就可以将它向普通颜色一样进行使用,可以进行填充,可以进行路径绘制等...二、创建CGPatternRef模型引用     在UIView子类的drawRect:方法中来做如下的测试: - (void)drawRect:(CGRect)rect { // Drawing...这两个block的格式定义如下: //创建模型回调的格式定义 //info参数为需要传递给回调函数的数据 //content参数为所绘制的图形上下文 typedef void (*CGPatternDrawPatternCallback...需要注意,CGContextSetFillPattern()方法中第1个参数为绘图上下文,第2个参数为模型CGPatternRef引用,第3个参数为一个色值数组,这里如果模式是无色渲染方式创建的,需要传入

73430

iOS开发-视图渲染与性能优化

1、布局(Layout) 调用layoutSubviews方法; 调用addSubview:方法; 会造成CPU和I/O瓶颈; 2、显示(Display) 通过drawRect绘制视图; 绘制...当渲染系统准备就绪,调用视图的-display方法,同时装配像素存储空间,建立一个CoreGraphics上下文(CGContextRef),将上下文push进上下文堆栈,绘图程序进入对应的内存存储空间...当绘制完成后,视图的像素会被渲染到屏幕上;当下次再次调用视图的-setNeedsDisplay,将会再次调用-drawRect方法。...当你重写-drawInContext方法时,Core Animation会请求分配一个纹理,同时确保Core Graphics会将你在-drawInContext中绘制的东西放入到纹理的位图数据中。...不要使用不必要的mask,可以预处理图片为圆形;或者添加中间为圆形透明的白色背景视图。即使添加额外的视图,会导致额外的计算;但仍然会快一点,因为相对于切换上下文,GPU更擅长渲染。

1.6K70

iOS坐标系探究

正文 我们先从一段最简单的代码入手,在drawRect中显示一个普通的UILabel; 为了方便判断,我把整个view的背景设置成黑色: - (void)drawRect:(CGRect)rect {...所以按照UILabel.layer默认的坐标(0, 0),在左上角进行了绘制。 接着,我们尝试使用CoreText来渲染一段文本。...先介绍一个图形上下文(graphics context)的概念,比如说我们常用的CGContext就是Quartz 2D的上下文。图形上下文包含绘制所需的信息,比如颜色、线宽、字体等。...用我们在Windows常用的画图来参考,当我们使用画笔在白板中写字时,图形上下文就是画笔的属性设置、白板大小、画笔位置等等。...iOS中,每个图形上下文都会有三种坐标: 1、绘制坐标系(也叫用户坐标系),我们平时绘制所用的坐标系; 2、视图(view)坐标系,固定左上角为原点(0,0)的view坐标系; 3、物理坐标系,物理屏幕中的坐标系

2.7K30

iOS学习——Quartz2D学习(1)

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

1.1K20
领券