“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情”
前言
Everything you can draw using Cocoa can also be drawn using Quartz.
Cocoa绘图代码本身使用Quartz来呈现内容。Cocoa只是添加了一个面向对象的接口,然而,Cocoa并没有为所有的Quartz行为提供类。在Cocoa中没有功能的情况下,可直接使用Quartz。
- Some of the Quartz features that are not supported directly by Cocoa include the following:
1、Layers 2、Gradients (also called shadings) 3、Image data sources 4、Blend modes (Cocoa uses compositing modes instead) 5、Masking images 6、Transparency layers (for grouping content) 7、Arbitrary patterns (other than images)
划重点: 1、什么是quartz 2D?
quartz 2D在iOS开发中的价值 quartz 2D能完成的工作 quartz 2D绘图的基础元素:路径 quartz 2D的内存管理
2、图形上下文
1)图形上下文的作用:保持绘图的信息、决定绘图的输出目标 2)状态的保持、恢复 3)绘图状态的设置:文字颜色、线宽
3、Draws the attributed string
1)在坐标中画出文字:
- (void)drawInRect:(CGRect)rect withAttributes:(NSDictionary<NSString *,id> *)attrsDraws the attributed string inside the specified bounding rectangle. 2)在point点开始画文字:drawAtPoint:withAttributes:
[string drawAtPoint: CGPointMake(100, 100) withAttributes: stringAttributes];
4、Draws the entire image
在坐标中画出图片:
- (void)drawRect:(CGRect)rect;保持图片大小在point点开始画图片[image drawAtPoint:CGPointMake(100, 340)];常见图形的绘制:饼图、柱状图、雪花、手势密码、画板( 电子签名)
5、矩阵操作
6、图片处理
水印、裁剪以及屏幕的截图
I 什么是quartz 2D?
1、Path-based drawing (also known as vector-based drawing) 2、Image creation, loading and display 3、Text layout and display 4、PDF creation and display 5、Transparency 6、Shadows 7、Color management 8、Transforms 9、Printing support 10、Anti-aliased rendering 11、OpenGL support
quartz 2D是一个二维绘图引擎,同时支持iOS、tvOS、macOS
Quartz 2D provides low-level, lightweight 2D rendering with unmatched output fidelity regardless of display or printing device.
1.1、quartz 2D能完成的工作
1》绘制图形、文字 2》绘制、生成图片(图像) 3》读取、生成PDF文件 4》图片的裁截:圆形裁剪 5》自定义控件
1.2、quartz 2D在iOS开发中的价值
当使用uikit框架的普通控件无法实现需求的时候,可采用quartz 2D技术将控件内部的结构画出来 ,自定义UI控件的样子
1.3、 quartz 2D须知
1)quartz 2D的API是纯C语言的 2)quartz 2D的API来自于Core Graphics框架 3)数据类型和函数基本都以CG作为前缀:CGContextRef、CGPathRef、CGContextStrokePath(ctx);
1.4、 quartz 2D绘图的基础元素:路径
1)路径定义了一条或者或多条形状或子路径 2)子路径可以包含一条或者多条直线或曲线 3)子路径也可以是一些简单的形状,例如线、圆形、矩形或者星型等 4)子路径还可以包含复杂的形状,例如地图轮廓或者涂鸦等 5)路径可以是开放的,也可以是封闭的 6)路径主要使用在定义视图运动轨迹
1.4、quartz 2D 的内存管理
1、如果含有create、copy的函数创建对象,使用完之后必须释放,否则将导致内测泄露 2、如果retain了一个对象,不在使用时需将其release掉
可以使用quart 2D的函数(e g. CGColorSpaceRetain)来指定retain\release一个对象,或者使用core foundation 的CFRetain.
II 图形上下文(graphics context)
III Draws the attributed string
IV Draws the entire image
4.1 iOS Quartz2D使用教程之【自定义控件】(横屏电子签名)
kunnan.blog.csdn.net/article/det… iOS横屏电子签名上篇【核心原理: 旋转特定的屏幕&Quartz2D】应用场景:采集电子签名 iOS横屏电子签名下篇(内含demo源码)【核心原理: 只旋转特定的屏幕& Quartz2D】开发过程遇到的问题及解决方案
4.2 抽奖转盘
iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路 (从CSDN下载完整Demo)
[video(video-K3T78OB0-1618275489033)(type-csdn)(url-live.csdn.net/v/embed/158… & 转盘算法)]
从CSDN下载demo: https://download.csdn.net/download/u011018979/16651799
文章:kunnan.blog.csdn.net/article/det… 原理:利用CoreGraphics进行自定义转盘的绘制 视频:live.csdn.net/v/158749 private : https://github.com/zhangkn/TurntableV