GraphicsRenderer 1.4.3

GraphicsRenderer 1.4.3

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布最后发布版2020年4月
SPM支持 SPM

Shaps 维护。



GraphicsRenderer

Carthage compatible Version License Language Platform

安装

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 文件。