【发布时间】:2018-03-01 00:53:40
【问题描述】:
我正在使用带有子类型墨水的 PDFAnnotation() 类向 PDFDocument 添加墨水注释。这个想法是捕获使用触摸绘制的签名。
受 UberSignature 启发,我的 UIBezierPath 是一系列应该用颜色填充的矩形。但是,当我将注释添加到 PDFDocument 时,它没有被填充。
UIBezierPath 的 fill() 方法在添加到 PDFAnnotation 时似乎什么都不做?
如果我使用相同的 UIBezierPath 并将其绘制在 UIImage 上,它会正确填充纯色。
对可能出现的问题有任何想法吗?
有问题的代码:
UIColor.red.setStroke()
UIColor.red.setFill()
var path = UIBezierPath()
path.append(myRectangles)
path.fill()
var annotation = PDFAnnotation(bounds: path.bounds, forType: .ink, withProperties: nil)
annotation.add(path)
myPDFPage.addAnnotation(annotation)
在屏幕截图中,我尝试编写普通文本和两个示例行。左边的线画得很慢,右边的线画得很快。这个想法是让线条的宽度根据绘制速度而变化,以使签名看起来更自然/逼真。
【问题讨论】:
-
您是否找到了根据 Pencil 的压力、速度和位置调整线条宽度和样式的方法?我尝试实现与 Apple 在其示例应用 (developer.apple.com/documentation/uikit/…) 中使用的相同方式,但遇到了严重的性能问题。
-
是的,我使用了我的问题和答案中显示的技术,我将线“切碎”成许多不同大小的较小四边形。为了提高性能,我确保制作多个注释而不是将所有内容集中在一起,并且我还实现了位图缓存。 IE。我存储为每 x 次迭代计算的实际位图,这样当添加笔画时,我只需在每次绘制时渲染最新的笔画。其余的被缓存。
标签: ios ipad uibezierpath pdfkit