裁剪UIView快照

时间:2018-11-13 20:39:46

标签: ios uiview

我正在实现自定义UINavigationViewController过渡,并且作为动画的一部分,我想快照并转换目标UIViewController。但是,我想对快照进行切片并独立转换各个部分。

UIView.h中有一条注释似乎表明这是可能的,甚至建议这样做:

  

支持从现有快照创建快照(作为复制,裁剪或创建可调整大小的变体的方法)。在需要多个快照的情况下,从公共超级视图创建快照并从该快照创建后续快照可能会更有效。

但是,我无法弄清楚如何从通用Superview快照实际进行裁剪或创建多个快照。

这可能吗?


注意:我确实调查过使用UIView.drawHierarchy(in:afterScreenUpdates:)来创建以后可以裁剪的图像,但是在UINavigationController过渡期间失败,并出现以下错误:

  

在CoreAnimation提交内部不支持带有afterScreenUpdates:YES的[Snapshotting]视图(0x140853600,MTKView)图形。

1 个答案:

答案 0 :(得分:1)

感谢KMT over at the Apple forums,我找到了解决方法:

UIView.resizableSnapshotView(from:afterScreenUpdates:withCapInsets:)

正确输入所需的裁切矩形和UIEdgeInsets.zero作为上限插图可正确创建裁切快照。