小编bya*_*haf的帖子

使用 PDFKit 实现 PencilKit

我的应用程序使用PDFKit显示 PDF 文件,并允许用户通过我自己的代码使用UIKitCoreGraphics框架对 pdf 文件进行注释。由于我想使用PencilKit框架来更好地进行注释,因此我正在实施该PencilKit框架,但我发现了一些我遇到的问题。

我所做的是添加PKCanvasViewDocumentView一个PDFView的。从本质上讲,它工作正常,我可以使用 的工具进行注释,PencilKit并且可以浏览 PDF 的页面。

当我放大 PDF 页面时出现问题。由于PKCanvasView没有在 内部缩放本身DocumentView,因此墨水注释显示为像素化。的PKCanvasView,因为它的变焦并没有改变没有重绘其与新的规模内容,并且更新contentScaleFactor使图更清晰不起作用。

另一个问题是,在某种程度上与前一个相关,由于应用程序适合每个 PDF 页面以使用所有屏幕,这使得UIScrollView包含DocumentViewPDFView 的 的缩放功能因 PDF 页面的大小而异. 这使得如果我打开一个有小页面的 PDF 和另一个大页面的 PDF,就大小(宽度 x 高度)而言,即使我选择了最小的,我也会看到不同大小的墨迹工具的线条宽度PKToolPicker两个文件的线宽。

所以我想知道是否可以将 aPKCanvasView和 PDFView 分别添加到UIViewController’s视图中,因此它们都具有相同的superview,具有相同的 ContentSize 和最大/最小缩放级别,并且在平移和缩放 时PKCanvasView,PDFView 也是如此。

无论如何,如果有解决方法,我很乐意知道。;)

pdf blurry ios ios13 pencilkit

18
推荐指数
0
解决办法
974
查看次数

SwiftUI 致命错误:找不到类型为“”的 ObservableObject 和 @EnvironmentObject 错误:可能作为此视图的祖先丢失

有关目标的详细信息:我想从 firebase 中获取数据,以问答的格式在行中列出数据。答案将有一个文本字段来更新它。有一个保存按钮可以通过将问题和答案上传到 firebase 来保存答案。

期望与结果: 当点击以导航到屏幕时,我的主菜单中应该有一个按钮。结果是我的应用程序冻结,并且在控制台中出现以下错误。

错误

Fatal error: No ObservableObject of type AllQuestionsAndAnswersClass found.
A View.environmentObject(_:) for AllQuestionsAndAnswersClass may be missing as an ancestor of this view.: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/Monoceros/Monoceros-39.4.4/Core/EnvironmentObject.swift, line 55
2020-01-24 13:21:25.523326-0600 FirebaseStarterApp[5025:894100] Fatal error: No ObservableObject of type AllQuestionsAndAnswersClass found.
A View.environmentObject(_:) for AllQuestionsAndAnswersClass may be missing as an ancestor of this view.: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/Monoceros/Monoceros-39.4.4/Core/EnvironmentObject.swift, line 55
Run Code Online (Sandbox Code Playgroud)

我的想法 我不太确定从哪里开始,但我认为这与必须将环境对象添加到预览并在 App Delegate 中执行某些操作有关。我看过一些关于 Scene Delegate 的东西,但我只有 App Delegate,我不确定是否有区别

我尝试过的 我尝试查看以下链接,但它们对我的案例没有帮助SwiftUI @EnvironmentObject 错误:可能作为此视图的祖先丢失

找不到类型的 ObservableObject

这是我的 …

ios swift swiftui

8
推荐指数
1
解决办法
3629
查看次数

PKToolPicker (PencilKit) 的初始位置?

如何设置 PKToolPicker 初始位置?

它总是从底部开始,如果有工具栏,则覆盖工具栏。

let toolPicker = PKToolPicker.shared(for: self.view.window!)
toolPicker?.addObserver(canvas)
toolPicker?.setVisible(true, forFirstResponder: canvas)
Run Code Online (Sandbox Code Playgroud)

ios apple-pencil ios13 ipados pencilkit

7
推荐指数
0
解决办法
361
查看次数

iOS PencilKit 以编程方式绘制形状

我试图弄清楚如何修改PKDrawing属性PKCanvasView以添加一些形状,如圆形或至少添加一条线,但是它PKDrawing是一种不透明的类型,所以没有太多事情要做。

是否有任何解决方法可以在 a 上创建形状或线条PKCanvasView

ios swift apple-pencil pencilkit

7
推荐指数
1
解决办法
390
查看次数

使用 LLDB 时如何修复错误“无法创建 Swift 临时上下文”

每当我在 swift 模式下运行 LLDB 表达式时,都会收到以下错误。

\n\n
\n

无法创建 Swift 临时上下文(无法加载 Swift\n stdlib)无法创建 Swift 临时上下文(无法加载 Swift\n stdlib)堆栈转储:\n 0。程序参数:/Applications/Xcode.app/Contents /Developer/usr/bin/lldb [1] 77539\n 分段错误 lldb

\n
\n\n

我尝试导入什么并不重要。

\n\n
~ \xe2\x9d\xaf\xe2\x9d\xaf\xe2\x9d\xaf lldb\n(lldb) expression -l swift -- import AppKit\nCannot create Swift scratch context (couldn't load the Swift stdlib)Cannot create Swift scratch context (couldn't load the Swift stdlib)Stack dump:\n0.  Program arguments: /Applications/Xcode.app/Contents/Developer/usr/bin/lldb\n[1]    6665 segmentation fault  lldb\n~ \xe2\x9d\xaf\xe2\x9d\xaf\xe2\x9d\xaf lldb                                                                                                                                                        \xe2\x9c\x98 139\n(lldb) expression -l swift -- import Foundation\nCannot create Swift scratch context (couldn't load the Swift stdlib)Cannot …
Run Code Online (Sandbox Code Playgroud)

xcode lldb swift

6
推荐指数
1
解决办法
4845
查看次数

与 SPM 库一起导入另一个包

想象一下当您的App项目使用两个自定义库时的这种情况

.xcworkspace
|- App.xcodeproj
|- LibraryA.xcodeproj
|- LibraryB.xcodeproj
Run Code Online (Sandbox Code Playgroud)

由于在这种情况下我们正在使用 Xcode 框架,因此可以将以下内容添加LibraryB到头文件中:

.xcworkspace
|- App.xcodeproj
|- LibraryA.xcodeproj
|- LibraryB.xcodeproj
Run Code Online (Sandbox Code Playgroud)

现在不仅不需要LibraryA在源 od 中导入LibraryB,而且每次LibraryBApp源文件中导入时,LibraryA都会随之导入,这非常方便。

这同样适用于可以在 Xcode 框架标头中找到的默认 Foundation 导入:

#import <LibraryA/MyLibraryA.h>
Run Code Online (Sandbox Code Playgroud)

现在使用 SPM,我需要在我使用它的任何地方手动导入 Foundation。

问:在单独使用 SPM 包时是否可以达到相同的结果?

我还没有找到关于这个问题的任何资源。谢谢!

xcode swift swift-package-manager

5
推荐指数
1
解决办法
239
查看次数

在vba中加入两个数组?

如何将这些数组与 的结果结合起来(2, 4, 5, 3, 7, 6)

array1 = Array(4,5,3,7,6)

array2 = Array(2)
Run Code Online (Sandbox Code Playgroud)

arrays excel vba

3
推荐指数
1
解决办法
5703
查看次数

删除 PencilKit 中的内容

在 iOS 13/iPadOS 中使用 PencilKit 时,如何从屏幕上删除所有内容,或删除选定的内容(通过套索)?

我在 PKDrawing 或 PKCanvasView 中找不到执行这些操作的任何函数?

swift ios13 ipados pencilkit

3
推荐指数
1
解决办法
2706
查看次数

在 Swift 中使用 PencilKit。将 PKDrawing 保存到数据库的最佳方法是什么?如何序列化呢?

我\xe2\x80\x99m 使用 Swift 在一个应用程序中工作,其中包含 PencilKit 和 \xe2\x80\x9ccanvasview\xe2\x80\x9d 来记笔记。一切正常,但我无法\xe2\x80\x99t找到\xe2\x80\x9cconvert\xe2\x80\x9d de由canvasView.drawing返回的值到字符串的方法, 以便将其上传并存储到数据库中。

\n\n

我可以获得图像,甚至是“base64EncodedString\xe2\x80\x9d”,但我需要一种方法将 \xe2\x80\x9cdrawing\xe2\x80\x9d 发送到服务器,然后从中加载,并显示在 canvasView 中。

\n\n

我已经测试过将其转换为json,但我可以\xe2\x80\x99t \xe2\x80\x9cdeserialize\xe2\x80\x9d 并将其再次转换为\xe2\x80\x9cdrawing\xe2\x80\x9d,什么时候从服务器加载呵呵。

\n\n

提前致谢

\n

serialization swift apple-pencil pencilkit

2
推荐指数
1
解决办法
1852
查看次数

iOS PencilKit 无法绘图

我正在尝试使用 PencilKit,但无法在应用程序中绘制任何内容。我设置我的代码如下。

import UIKit
import PencilKit

class DrawingViewController: UIViewController {

  var canvasView: PKCanvasView!

  override func viewDidLoad() {
    super.viewDidLoad()

    let canvasView = PKCanvasView(frame: view.bounds)
    canvasView.allowsFingerDrawing = false
    view.addSubview(canvasView)

    canvasView.translatesAutoresizingMaskIntoConstraints = false
    canvasView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    canvasView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    canvasView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    canvasView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true

    canvasView.backgroundColor = UIColor.lightGray
    canvasView.tool = PKInkingTool(.pen, color: .black, width: 10)
  }

}
Run Code Online (Sandbox Code Playgroud)

我期望在 canvasView 中绘制/墨迹,但当我尝试该应用程序时没有响应。我的设备运行的是 13.2,所以目标没有问题。我还从 WWDC 2019会议下载了 Apple 的应用程序,但它无法在模拟器中运行。为了澄清起见,我还在真实设备中测试了它,但在任何使用PencilKit的应用程序中都没有响应。

ios swift pencilkit

2
推荐指数
1
解决办法
2780
查看次数