fra*_*ish 6 uiviewcontroller uinavigationcontroller uiviewanimationtransition ios ios10
我完全透明的桌子和导航控制器.因此,在推送新视图控制器时,动画被破坏了.因此,我添加了自己的自定义推送转换,该转换获取下一个视图控制器的快照并为其设置动画.
这不再适用于iOS10.snapshotView(afterScreenUpdates: true)返回纯白色的视图.我也尝试通过图形上下文使用旧方法获取快照,但它也不起作用.
如何确保在snapshotView之前加载推送到导航控制器的视图?或者有更好的方法来解决这个问题吗?不幸的是,这对我来说是一个突破性的变化.
我想说这是严格的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;
}
Run Code Online (Sandbox Code Playgroud)
这个扩展应该可以解决这个问题
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)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2310 次 |
| 最近记录: |