我对桌子和导航控制器完全透明。因此,在推送新视图控制器时,动画被破坏了。因此,我添加了自己的自定义推送转换,它会拍摄下一个视图控制器的快照并为其设置动画。
这不再适用于iOS10。 snapshotView(afterScreenUpdates: true)
返回纯白色的视图。我也尝试通过图形上下文使用旧方法获取快照,但它也不起作用。
如何确保在snapshotView之前加载推送到导航控制器的视图?或者有更好的方法来解决这个问题吗?不幸的是,这对我来说是一个突破性的变化..
答案 0 :(得分:8)
我想说的是,这严格来说是iPhone 7模拟器和iPhone 7+模拟器问题。该问题不会出现在真实设备上。如果你需要为模拟器解决这个问题,我可以在Pod找到一个解决方法:https://github.com/NewAmsterdamLabs/ZOZolaZoomTransition/
- (UIImage *)zo_snapshot {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, [UIScreen mainScreen].scale);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.layer renderInContext:context];
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshot;
}
答案 1 :(得分:1)
此扩展程序应解决问题
extension UIView {
/// Replacement of `snapshotView` on iOS 10. Fixes the issue of `snapshotView` returning a blank white screen.
func snapshotImageView() -> UIImageView? {
UIGraphicsBeginImageContext(bounds.size)
guard let context = UIGraphicsGetCurrentContext() else {
return nil
}
layer.render(in: context)
let viewImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return UIImageView(image: viewImage, highlightedImage: viewImage)
}
}