在暗黑模式下使用PencilKit会导致颜色错误。

10

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

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

PKInkingTool(.pencil, color:color, width:10)

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

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

我认为在PencilKit中支持深色模式的整个理念是让它自动选择在深色模式下看起来仍然不错的颜色。这些颜色与在浅色模式下的颜色不同。例如,如果你不在深色模式下,在白色背景上用黑笔写字,那么笔的颜色必须改变,否则在深色模式下将看不见,即黑色在黑色上面。 - johnbakers
1
@johnbakers PKCanvasView 有一个 bug。我可以重现 OP 报告的相同 bug。如果应用程序在深色模式下启动,则画布保持在浅色模式,并使用“标签”颜色进行绘制会导致笔以黑色绘制。 - Bruno Philipe
1
@BrunoPhilipe 你所说的“标签”颜色是什么意思?我正在进行测试,如果我的iPad处于深色模式并启动我的PencilKit应用程序,则画布也处于深色模式,并且颜色会按预期调整。如果我在应用程序打开时将iPad切换到浅色模式,则所有颜色和工具选择器颜色都会按预期切换,因此“白色”颜色选项变为“黑色”颜色选项。 - johnbakers
1
我知道这是一个较旧的帖子,但我在我的iPad上遇到了同样的错误,这让我很烦恼。当在深色模式下使用UIColor.label时,画笔会绘制成黑色(我正在创建自定义PencilTool),这似乎真的是一个bug。你找到了解决方法吗?我不能明确地使用黑色或白色作为颜色(显然)不会自动更改。唯一看起来有效的解决方法是使用separatorColor而不是label。它比较浅,但至少可以自动适应。 - inexcitus
2个回答

0

你可以在 'PKToolPicker' 中使用 'colorUserInterfaceStyle',但如果想要保存绘制的部分,可能需要考虑一下。

colorUserInterfaceStyle = .light

0

以下代码无论应用程序以哪种模式启动都可以正常工作:

let color = PKInkingTool.convertColor(.white, from: .light, to: .dark)
let tool = PKInkingTool(.pen, color: color, width: CGFloat(width.rawValue))

诀窍在于使用PKInkingTool.convertColor而不是动态系统颜色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接