在 Swift 中在 UIWebView 上方绘制

Draw above UIWebView in Swift

我正在寻找一种在 UIWebView 上方绘制 "Lines" 的方法。

我有一个显示 PDF fileUIWebView,用户应该能够添加 "Lines" 和 "Sketches"(简单的一种颜色线条等)以确保这一点可以在 UIWebView 之上使用 UIView 来完成,但我 运行 陷入 2 个逻辑问题。

首先,绘图所在的 UIView 能否在线条旁边透明 - 这样您就可以通过它查看 pdf

如果用户 缩放 WebViewUIView 必须 zoom "with each other" - 所以绘图保持在相同的 spot/zoom 水平?

有没有其他方法可以显示 PDF 并向其添加 drawings/annotations?目前我正在使用 QLPreviewController,我看不到添加任何类型注释的方法?

这三个是最佳实践吗?

PSPDFKit 可以很好地处理这个(以及许多其他难题)。对此类问题使用 Web 视图可能会遇到很多小问题。任何对 PDF 有 non-trivial 需求的商业产品绝对应该从那里开始。对于开源项目,除了 "yeah, PDFs are a pretty tough; good luck."

我没有很好的答案

也就是说,这里有一些可能对您有所帮助的起点。

  • 您可以使用 webView.scalesPageToFit = false
  • 关闭缩放
  • 您可以使用webView.scrollView.zoomScale
  • 获取当前缩放比例
  • 我相信你可以KVO观察zoomScale在它变化的时候跟踪它,但你可能只能得到目标值(这会导致你卡顿)
  • 您可以禁用缩放 (scalesPageToFit),然后使用 UIPinchGestureRecognizerscrollView.setZoomScale(_:animated:) 自行 re-implement。这样您就可以更好地跟踪缩放变化。您也可以尝试使用 CABasicAnimation 自己处理动画,以便保持同步。

我对滚动视图、Web 视图和 PDF 的体验是,有很多有趣的小交互会让您大吃一惊。得到 "kind of" 有效的东西并不难,但让它真正干净、光滑、漂亮可能是一场噩梦。这就是我通常向客户推荐 PSPDFKit 的原因。与定制开发相比,您在许可证上的花费通常要少得多。