一脆贵、Core Graphics介紹
1. 什么是Core Graphics
(1)Core Graphics Framework 是一套基于 C 的 API 框架湖笨,使用了 Quartz 作為繪圖引擎,可用于一切繪圖操作。它提供了低級(jí)別形帮、輕量級(jí)、高保真度的 2D 渲染矩肩。(2)Quartz 2D 是 Core Graphics Framework 的一部分秸谢,是一個(gè)強(qiáng)大的二維圖像繪制引擎。(3)我們使用的 UIKit 庫中所有 UI 組件其實(shí)都是由 CoreGraphics 繪制實(shí)現(xiàn)的量九。所以使用 Core Graphics 可以實(shí)現(xiàn)比 UIKit 更底層的功能适掰。(4)當(dāng)我們引入 UIKit 框架時(shí)系統(tǒng)會(huì)自動(dòng)引入 Core Graphics 框架颂碧,同時(shí)在 UIKit 內(nèi)部還對(duì)一些常用的繪圖 API 進(jìn)行了封裝,方便我們使用类浪。 (比如:CGMutablePath 是 Core Graphics 的底層API载城,而 UIBezierPath 就是對(duì) CGMutablePath 的封裝。)
2. 繪圖的一般步驟
(1)獲取繪圖上下文
(2)創(chuàng)建并設(shè)置路徑
(3)將路徑添加到上下文
(4)設(shè)置上下文狀態(tài)(如筆觸顏色费就、寬度诉瓦、填充色等等)
(5)繪制路徑
二、繪制直線
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let frame = CGRect(x: 30, y: 30, width: 250, height: 100)
let cgView = CGView(frame: frame)
self.view.addSubview(cgView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
class CGView:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
//設(shè)置背景色為透明力细,否則是黑色背景
self.backgroundColor = UIColor.clear
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
super.draw(rect)
//獲取繪圖上下文
guard let context = UIGraphicsGetCurrentContext() else {
return
}
//創(chuàng)建一個(gè)矩形睬澡,它的所有邊都內(nèi)縮3
let drawingRect = self.bounds.insetBy(dx: 3, dy: 3)
//創(chuàng)建并設(shè)置路徑
let path = CGMutablePath()
path.move(to: CGPoint(x:drawingRect.minX, y:drawingRect.minY))
path.addLine(to:CGPoint(x:drawingRect.maxX, y:drawingRect.minY))
path.addLine(to:CGPoint(x:drawingRect.maxX, y:drawingRect.maxY))
//添加路徑到圖形上下文
context.addPath(path)
//設(shè)置筆觸顏色
context.setStrokeColor(UIColor.orange.cgColor)
//設(shè)置筆觸寬度
context.setLineWidth(6)
//繪制路徑
context.strokePath()
}
}