GraphicsRenderer
安装
Cocoapods
pod "GraphicsRenderer", "1.3.0"
Carthage
github "shaps80/GraphicsRenderer" ~> 1.2.1
Swift 3
pod "GraphicsRenderer", "1.1.0"
Swift 2.3
pod "GraphicsRenderer", "1.0.0"
介绍
GraphicsRenderer 被设计成一种drop-in UIGraphicsRenderer端口。因此,所有函数名称都是匹配的,这使得将来交换变得容易。
UIGraphicsRendererFormat > RendererFormat
UIGraphicsImageRendererFormat > ImageRendererFormat
UIGraphicsPDFRendererFormat > PDFRendererFormat
UIGraphicsRendererContext > RendererContext
UIGraphicsImageRendererContext > ImageRendererContext
UIGraphicsPDFRendererContext > PDFRendererContext
但是,您将主要使用以下类
UIGraphicsRenderer > Renderer
UIGraphicsImageRenderer > ImageRenderer
UIGraphicsPDFRenderer > PDFRenderer
GraphicsRenderer也是跨平台的,仓库中包含了iOS和macOS的演示项目。
GraphicsRenderer能够匹配UIGraphicRenderer目前提供的全部API,但为了保证其在所有平台上都能良好运行,它还包含了一些额外的便捷功能,例如对context
进行翻转
。
GraphicsRenderer也是基于协议的,这使得它更符合Swift的设计理念,并且允许通过一些示例如performDrawing()
来实现由泛型驱动的集成。
InkKit
我还有一个名为InkKit的库,它现在使用这个库作为其内部工作的基础。为了获得更多绘图和布局便利功能,也可以查看该库。~~
注意:如果你的项目中包含了InkKit,就无需再包含此项目。
示例
该仓库中包含两个示例项目,一个是iOS版本,另一个是OSX版本。
只需选择适当的方案,构建并运行即可。
让我们从创建一个简单的绘图函数开始
func performDrawing<Context: RendererContext>(context: Context) {
let rect = context.format.bounds
UIColor.white.setFill()
context.fill(rect)
UIColor.blue.setStroke()
let frame = CGRect(x: 10, y: 10, width: 40, height: 40)
context.stroke(frame)
UIColor.red.setStroke()
context.stroke(rect.insetBy(dx: 5, dy: 5))
}
现在让我们从这个绘制中创建一个图像
let image = ImageRenderer(size: CGSize(width: 100, height: 100)).image { context in
performDrawing()
}
或者你可能更喜欢PDF格式?
let bounds = CGRect(x: 0, y: 0, width: 612, height: 792)
try? PDFRenderer(bounds: bounds).writePDF(to: url) { context in
context.beginPage()
performDrawing(context: context)
context.beginPage()
performDrawing(context: context)
}
绘图
当你与PDF文件一起工作时,无需担心创建PDF、结束页面甚至关闭PDF,所有这些都是自动处理的。
在绘图块内部,返回给你的context
包含两个关键信息。(与UIGraphicsRendererContext
类似)
format
提供了关于边界、缩放等信息。cgContext
是底层CGContext
。
最后需要注意的是,stroke
方法已被优化,以与Apple的实现方式相似,它们会自动缩进0.5。如果你不希望自动进行这种行为,可以将CGContext
上的普通方法一起使用。
例如:cgContext.stroke(rect: myRect)
需求
该库有以下需求
- Swift 4.0
- iOS 8.0+
- OSX 10.10+
作者
Shaps Benkau, [email protected]
许可证
GraphicsRenderer 遵循 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。