Apple Pencil笔迹颜色深于PKInkingTool设置值的问题咨询
问题原因
这不是PencilKit的已知缺陷,是遗漏了两个配置逻辑导致的:
- PencilKit中
PKInkingTool默认使用模拟真实墨水的特殊混合模式,同一笔触的边缘重叠、多笔触叠加时都会自动加深颜色,你设置的alpha只是基础值,最终显示效果会比预设值更深 - 系统默认会将Apple Pencil的压感值关联到笔触透明度,压感越高笔触alpha越大,也会导致书写时颜色偏深
修复方案
iOS 14及以上系统(推荐方案)
显式指定PKInkingTool的混合模式为.sourceOver,即可严格使用你设置的颜色参数,不会出现叠加加深的问题:
let penColor = UIColor.white.withAlphaComponent(0.5) // 显式指定blendMode为.sourceOver,禁用默认的墨水叠加逻辑 drawingView.tool = PKInkingTool(.pen, color: penColor, width: 15, blendMode: .sourceOver)
兼容iOS 13的方案
iOS 13不支持自定义混合模式,可以适当调低你设置的颜色alpha值,抵消默认叠加逻辑带来的加深效果,例如你需要0.5的透明度时,可以设置为0.3~0.35左右匹配实际显示效果。
额外校验项
如果调整后仍存在色差,检查两个配置:
- 确认
drawingView.isOpaque = false,避免系统对半透明视图做自动颜色校正 - 不要在
drawingView下方叠加带有半透明效果的视图,避免底色混合带来的色差
内容的提问来源于stack exchange,提问作者Grant Davis
相关产品推荐
相关产品推荐

