在 Swift 中在 UIWebView 上方绘制
Draw above UIWebView in Swift
我正在寻找一种在 UIWebView
上方绘制 "Lines" 的方法。
我有一个显示 PDF file
的 UIWebView
,用户应该能够添加 "Lines" 和 "Sketches"(简单的一种颜色线条等)以确保这一点可以在 UIWebView
之上使用 UIView
来完成,但我 运行 陷入 2 个逻辑问题。
首先,绘图所在的 UIView
能否在线条旁边透明 - 这样您就可以通过它查看 pdf
?
如果用户 缩放 WebView
,UIView
必须 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
),然后使用 UIPinchGestureRecognizer
和 scrollView.setZoomScale(_:animated:)
自行 re-implement。这样您就可以更好地跟踪缩放变化。您也可以尝试使用 CABasicAnimation
自己处理动画,以便保持同步。
我对滚动视图、Web 视图和 PDF 的体验是,有很多有趣的小交互会让您大吃一惊。得到 "kind of" 有效的东西并不难,但让它真正干净、光滑、漂亮可能是一场噩梦。这就是我通常向客户推荐 PSPDFKit 的原因。与定制开发相比,您在许可证上的花费通常要少得多。
我正在寻找一种在 UIWebView
上方绘制 "Lines" 的方法。
我有一个显示 PDF file
的 UIWebView
,用户应该能够添加 "Lines" 和 "Sketches"(简单的一种颜色线条等)以确保这一点可以在 UIWebView
之上使用 UIView
来完成,但我 运行 陷入 2 个逻辑问题。
首先,绘图所在的 UIView
能否在线条旁边透明 - 这样您就可以通过它查看 pdf
?
如果用户 缩放 WebView
,UIView
必须 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
),然后使用UIPinchGestureRecognizer
和scrollView.setZoomScale(_:animated:)
自行 re-implement。这样您就可以更好地跟踪缩放变化。您也可以尝试使用CABasicAnimation
自己处理动画,以便保持同步。
我对滚动视图、Web 视图和 PDF 的体验是,有很多有趣的小交互会让您大吃一惊。得到 "kind of" 有效的东西并不难,但让它真正干净、光滑、漂亮可能是一场噩梦。这就是我通常向客户推荐 PSPDFKit 的原因。与定制开发相比,您在许可证上的花费通常要少得多。