我正在实现自定义UINavigationViewController过渡,并且作为动画的一部分,我想快照并转换目标UIViewController。但是,我想对快照进行切片并独立转换各个部分。
UIView.h中有一条注释似乎表明这是可能的,甚至建议这样做:
支持从现有快照创建快照(作为复制,裁剪或创建可调整大小的变体的方法)。在需要多个快照的情况下,从公共超级视图创建快照并从该快照创建后续快照可能会更有效。
但是,我无法弄清楚如何从通用Superview快照实际进行裁剪或创建多个快照。
这可能吗?
注意:我确实调查过使用UIView.drawHierarchy(in:afterScreenUpdates:)
来创建以后可以裁剪的图像,但是在UINavigationController过渡期间失败,并出现以下错误:
在CoreAnimation提交内部不支持带有afterScreenUpdates:YES的[Snapshotting]视图(0x140853600,MTKView)图形。
答案 0 :(得分:1)
感谢KMT over at the Apple forums,我找到了解决方法:
UIView.resizableSnapshotView(from:afterScreenUpdates:withCapInsets:)
正确输入所需的裁切矩形和UIEdgeInsets.zero
作为上限插图可正确创建裁切快照。