问题标签 [pencilkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
123 浏览

ios - PKCanvasView 如何在 iOS 13 [objC] 中获取位置和压力​​?

我想获取已在 PKCanvasView 中绘制的每个点位置和压力​​的数据,我尝试过touchesBegan启用保持用户交互和手势识别器,但没有一个对我有用。如果有任何其他解决方案可以跟踪 iPencil 的这些值,请指导我。

0 投票
1 回答
1547 浏览

ios - PencilKit 中的 PKToolPicker 不会显示在以编程方式创建的 UIWindow 上

我有一个视图控制器想要显示来自 PencilKit的 aPKCanvasView和 a 。PKToolPicker这是代码:

我的问题是,当我以编程ViewController方式作为情节提要中的初始 ViewController启动时,PKToolPicker它在屏幕底部显示得很好。这是一个工作的屏幕截图DrawingViewController

在此处输入图像描述

但是,如果我以编程ViewController方式使用新的UIWindow. 然后PKToolPicker不显示。

在此处输入图像描述

所以我假设我的ViewController代码没有任何问题。这可能是我如何创建新 UIWindow 的问题。

我使用以下代码(注意我正在使用 iOS 13)从以下代码创建窗口SceneDelegate.swift

我很困惑。PencilKit 没有给出太多关于它为什么无法显示 PKToolPicker 的警告或错误。任何输入表示赞赏。

编辑 1

只是添加更多信息。我查看了层次结构查看器,看起来 PKToolPicker 在那里,但没有一个工具被绘制到屏幕上。

在此处输入图像描述 在此处输入图像描述

编辑 2

我在 中添加了一个计时器ViewController,我注意到当PKToolPicker实际显示时,PKCanvasView实际上成为第一响应者。不是立即,而是几秒钟后。当我使用以编程方式创建的UIWindow时,PKCanvasView永远不会成为第一响应者。所以也许这与我的窗口没有要求以某种方式成为第一响应者这一事实有关。

编辑 3

我设法简化了问题并将其放入您可以在此处查看的示例应用程序中。如果您查看SceneDelegate.swift,那里有创建我自己的窗口的代码。如果我将此代码注释掉,我会毫无问题地看到我的工具选择器。当我取消注释代码时,它不显示工具选择器。

0 投票
2 回答
1753 浏览

ios - 带有底层背景图像的可缩放 PKCanvasView

我喜欢PKCanvasView使用底层图像进行滚动和缩放。似乎可以在不添加背景图像的情况下使其可滚动和可缩放。但是要使用底层图像制作它,我不知道如何使它工作。

由于PKCanvasView是 的子类UIScrollView,我尝试UIView在滚动视图中放置自定义内容,然后设置一个委托来指定该视图进行缩放。但是PKCanvasView的绘图图像和内容视图在缩放时不会同步它们的位置,滚动没关系。

然后我尝试PKCanvasView作为另一个内容视图UIScrollView,将PKCanvasView其视为不可滚动视图。然后我同步PKCanvasView的绘图和容器绘图图像之间的位置。但是,我不确定是否PKCanvasView可能不是为在另一个下设计的UIScrollView,用手指定位标尺的行为不稳定,通过拖动一直跳到另一个地方。

据我所知,大多数PKCanvasView示例代码都可以很好地工作,而无需使用底层图像进行缩放。但是一旦我设置maximumZoomScale为 2 或更多。然后它不再同步图纸和底层背景图像。

谢谢

0 投票
0 回答
165 浏览

swiftui - PKCanvasView 上的手指和铅笔宽度不同

我正在尝试构建一个能够同时使用苹果铅笔和手指输入进行绘图的应用程序。但是,当我将工具的宽度设置为足够小的数字 (1) 时,铅笔输入会正确显示,但是当我使用手指时,它会画出更粗的线条。在铅笔和手指之间切换时,我希望宽度均匀。任何帮助,将不胜感激。Bellow 是最小的可重现代码。

0 投票
0 回答
457 浏览

ipados - 在深色模式下使用 PencilKit 会导致颜色错误

在暗模式下,PKInkingTool 中设置的所有颜色似乎都在亮度上反转。如果我选择鲜红色,我会得到深红色,反之亦然。

例如,如果我使用 UIColorPickerViewController 来选择一种颜色:

PKCanvasView 中显示的颜色不是正确的颜色。似乎可行的唯一方法是不支持暗模式。

有没有办法让 PencilKit 使用正确的颜色而不是自动转换颜色?

0 投票
1 回答
857 浏览

ios - 在没有 PKCanvasView 的情况下使用 PKToolPicker

我正在尝试PKToolPicker从自定义视图(不是 PKCanvasView)中使用 PencilKit(iOS/Swift)。自定义视图符合PKToolPickerObserver. 在编译期间一切正常,但我从来没有看到 PKToolPicker!如果我用 PKCanvasView 替换我的自定义视图,一切正常!

我在 SwiftUI 中使用 UIViewRepresentable 执行此操作(因此 First Responder 似乎是个谜!)。

这是有问题的 SwiftUI 视图:

如果我myViewPKCanvasView上面的替换,将看到 PKToolPicker。

为了完整起见,这里是 MyView 存根:

有人成功地做到了这一点吗?采用 PKToolPicker 是否有一些未记录的要求?

0 投票
1 回答
974 浏览

ios - 自定义 PKToolPicker 工具

PKToolPicker在 PencilKit (iOS 13+) 中带有默认工具,即 iOS 上的钢笔、记号笔、铅笔、橡皮擦、套索、尺子和颜色选择器。在 iPadOS 上,这通过撤消/重做和(...)为 PKToolPicker 提供“自动最小化”选项的菜单进行了扩展。

两个问题:

  • 无论如何要禁用/删除选择器中的默认工具之一(比如标尺)?
  • 是否可以在(...)子菜单中添加其他操作(快照控制器就是这种情况,有很多有趣的选项)?

提前致谢。

0 投票
1 回答
356 浏览

ios - 有没有人可以清楚地将 PKDrawing 呈现为 PDF 的好方法?

我正在尝试通过 PDF 文件共享我的 PKDrawing 结果以供电子邮件或打印。我正在使用其他 2 个 PDF 文件以及顶层的 PKDrawing 创建 PDF。2 个 PDF 图层看起来很清晰。然而,PKDrawing 有点颗粒感,尤其是与打印的屏幕截图相比。

这是我当前的代码:

0 投票
2 回答
931 浏览

ios - 如何从 PencilKit 中的 PKInkingTool 设置恒定的笔划宽度

当使用 PencilKit API 使用手指/铅笔在屏幕上绘图时,我想将笔划的宽度设置为常数。目前,say中的宽度设置PKInkingTool仅设置用手指或铅笔绘制时的基线宽度,如果用手指/铅笔进行慢速或快速笔划,宽度会有所不同。

我不确定如何设置一个最小示例,有很多代码可以让 PencilKit 视图正常工作。您可以使用Apple 的这个示例来设置一个简单的绘图应用程序。

这是我选择默认绘图工具的代码:

canvas对象在哪里PKCanvasViewvalidWidthRange每个 InkType 中都有一个属性(链接到文档),但我不确定这是否可以帮助我实现我想要的。

0 投票
1 回答
1122 浏览

ios - 如何在 UIKit 中使用 ZStack

这是我的 SwiftUI 代码,它运行良好。用户可以毫无问题地绘制和按下按钮。我希望用户在任何东西、标签、按钮等上绘图。但是我如何使用 UIKit 做到这一点?任何想法 ?

(我为 swiftui 编辑了 Kavsoft 的代码铅笔包:https ://kavsoft.tech/SwiftUI_2.0/Pencil_Kit/ )

这是我的 SwiftUI 代码,它运行良好。用户可以毫无问题地绘制和按下按钮。我希望用户在任何东西、标签、按钮等上绘图。但是我如何使用 UIKit 做到这一点?任何想法 ?