[iPad]PencilKit教程2、PencilKit的新功能

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/14088690.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

PencilKit(Swift)示例代码:点击下载

  PencilKit可帮助增强iPad应用程序中的创造力,书写,绘图和动画效果。探索对我们的绘图和注释框架的最新改进,并发现如何利用PKToolPicker,PKCanvasView和PKStroke等API来支持插图和书写应用程序中的新功能。要充分利用本节内容,您应该对PencilKit有基本的了解。如果您想复习一下,WWDC19的“ PencilKit简介”是一个很好的起点。


您好,欢迎来到WWDC。

你好 我是Jenny,我是Pencil and Paper小组的工程师。欢迎使用“ PencilKit的新增功能”。在iOS 13中,我们引入了PencilKit,这是一个新框架,可轻松为您的应用程序添加低延迟的表达绘画体验。

在iOS 14中,我们为开箱即用的PencilKit体验添加了一些新功能

接下来,我们将介绍我们对整个系统的手指与铅笔绘图策略所做的一些更改

最后,除了简要介绍我们将要公开的一些新API外,我们还将介绍我们已经进行的一些API更改,这些更改实际上将扩展您可以使用PencilKit进行操作的可能性。

在iOS 13中,我们向您展示了如何通过PKCanvasView仅用几行代码即可采用PencilKit。很高兴看到您如何采用它。如果您尚未采用PencilKit,请查看我们从2019年开始的演讲,以了解它的简便性。

Apple Pencil具有巨大的潜力,它确实可以释放生产力和iPad的功能。因此,我们迫不及待地向您展示了我们在PencilKit体验中添加的一些新增强功能,而最好的部分是它们要求零采用率。

随着我们在手写笔记中注入智能,PencilKit文档变得更加智能。

我们提供了丰富的选择体验,可反映您选择文字的方式。因此,您可以点按两次一个单词,再次点按两次以选择一行,甚至可以使用抓柄来扩展选择范围。

我们已经改进了一些增强的手势,例如对速度敏感的轻按,因此您可以通过刷一些特定的笔触来进行不连续的选择

我们还介绍了一种在手写内容之间插入空格的简便方法

您是否曾经写过东西并意识到自己之间忘记了某些东西?您不必在空白处写超小巧的东西,而只需在空白处点击,在标注栏中点击“插入空间”,使用抓手来调整空间量即可。

然后轻松地在两者之间添加新内容。

我们还采用了新的UIKit系统标准颜色选择器,它具有丰富的新方法,可以为工程图选择更多颜色。您将使用光谱或滑块获得多种颜色的选择,可以保存自定义颜色以供以后使用甚至可以使用滴管对颜色进行采样。对于现有的PencilKit客户端,不需要添加任何内容。您将免费获得它。有关如何轻松采用此功能的更多信息,请查看UIKit演讲“使用iOS选择器,菜单和操作进行构建”。我们还为第三方做了一些很棒的延迟优化。在iOS 13中,我们推荐了避免影响延迟的技术,例如避免任何视觉效果视图或模糊效果。在iOS 14中,情况已不再如此,您可以对心脏的内容使用不同的视觉效果视图材料和线条。

此外,我们还为Catalyst添加了PKCanvasView支持。

不支持工具选择器,但是您可以通过PKCanvasView API轻松在画布上设置墨水。

提醒一下,对于智能选择,插入空间和新的颜色选择器,不需要额外的采用。这就是为什么我们在全系统范围内使用它,因此我们可以不断地对其进行逐年增强从而在整个系统中提供一致的增强体验。

我们还做了一些工作来区分手指和铅笔的绘画体验,以及如何在整个系统中更加统一。

PhoneKit和iPad均支持PencilKit。

允许使用手指和Apple Pencil进行绘图,并且必须记住,并非每个人都拥有铅笔。

在iOS 13中,我们引入了allowFingerDrawing属性,这意味着如果启用该属性,一根手指会画图,而两根手指会滚动。

在iOS 14中,我们有一个新的全局设置,可以通过“仅首选铅笔图”开关在设置中的新Apple Pencil菜单中进行设置

这适用于所有使用Pencil的第三方,既适用于采用PencilKit的应用程序,也适用于具有自己的绘图引擎的应用程序。

可以通过UIKit中的UIPencilInteraction访问此设置。具有自己的绘图引擎的非PencilKit客户端应通过查询UIPencilInteraction.prefersPencilOnlyDrawing参数来尊重设置

在电话上,此值始终为“ false”,因为手指是您唯一可用的绘图工具。

另一方面,PencilKit客户可以免费获得因为它已出现在工具选择器中。

这将切换您在设置窗格中看到的全局设置。

因此,当在Notes中打开“用手指绘制”开关时,这意味着它还将在整个系统中打开,例如屏幕截图,标记,其他PencilKit客户端,并且新值也将反映在设置中。

我们还更新了PKCanvasView上的调用,以说明此新的全局手指图切换。我们不建议使用allowFingerDrawing,而是在画布上设置PKCanvasViewDrawingPolicy。

请不要设置绘图手势识别器allowedTouchTypes,而应在画布上设置绘图策略以控制铅笔与手指的触摸。

共有三种不同的绘图策略。第一个是PKCanvasViewDrawingPolicy.anyInput,表示您允许任何输入,同时允许手指和铅笔绘画。

第二个策略“ pencilOnly”表示只允许使用“ Pencil”,因此手指将滚动或做出智能选择手势。

第三个是默认值,取决于是否隐藏了工具选择器。

如果工具选择器可见,则它遵循UIPencilInteraction的preferredsPencilOnlyDrawing状态,也就是用户在设置中设置或在工具选择器中切换的状态。

如果隐藏了工具选择器,则只有铅笔会绘制。

每当手指滚动时,您也可以执行智能选择手势。让我给你演示。您甚至不必选择套索工具。选择笔后,您可以滚动并在手写内容上执行智能选择手势,以便您可以在书写之间轻松地来回移动...

然后选择

如果您的应用程序纯粹是铅笔应用程序,则可能不想显示“用手指绘制”切换。要在用户界面中关闭此功能,您需要将PKToolPicker.showsDrawingPolicyControls设置为false。

默认情况下,在iPad上始终为true,这意味着它们将始终在工具选择器中显示“用手指绘制”切换。如果将画布绘制策略设置为“仅铅笔”,则需要将其设置为false,这样用户在翻转开关时就不会感到困惑,并且画布上没有任何变化。

我们还更新了PKToolPicker初始化方法。现在您可以初始化工具选择器的各个实例,而不必为UIWindow使用单个共享的工具选择器。

这样,您现在可以拥有具有各自状态的独立PKToolPickers。

在这种状态下,为应用程序中的不同画布或窗口提供多个工具选择器非常有用但是,这样做的含义之一是,必须始终通过Ivar引用来保留自己的工具选择器实例

因此,什么时候应该有一个实例而不是创建一个新实例?作为“铅笔工具简介”讲座的重温,您可能还需要将其他UI响应器设置为“ true”以使工具选择器可见。

您应该始终将唯一的工具选择器实例传递给这些响应者。

另一方面,什么时候需要单独的工具选择器?假设我的应用有两种模式,一种记笔记模式和一种涂色模式。

我的笔记画布需要默认的绘制策略,而我却希望手指和铅笔都可以在着色画布上绘制。

在这种情况下,每个画布都应具有各自独特的工具选择器实例,并具有各自的独特状态,因为我要在着色画布上隐藏绘图策略控件。

在选择工具方面,工具选择器还将具有不同的状态。

我将在笔记画布上将选定的工具设为黑色笔,而我的着色画布将使用紫色标记作为默认标记。应用程序中的工具选择器还可能具有其他不同的状态,例如在绘制与标记图像时使用不同的颜色用户界面样式

最后,我们在iOS 14中对PencilKit进行的最大更改之一是提供了对笔触的访问,使您可以窥视PKDrawing的内部。

使用笔触,您将能够访问墨水,路径,点等。

有关更多信息,请查看“检查,修改和构造PencilKit绘图”讨论。

抚摸笔触可以解锁更多有趣的自定义PencilKit体验,其中包括注释,动画,识别和机器学习。

这就是PencilKit的新功能。

对于现有的PencilKit客户端,您将获得零采用率的一些新功能增强,包括智能选择,插入空间和新的颜色选择器。

从不推荐使用的API移到新的API ,以确保您提供最佳的手指和铅笔绘图体验。

最后,您可以使用一些新的PencilKit API来检查PKDrawing内部的笔画,将您的Pencil体验提升到一个新的水平。感谢您的收看,我们期待看到您对PencilKit的处理。

 

原文地址:https://www.cnblogs.com/strengthen/p/14088690.html