需求描述:
有两个ViewController 我们记做 A、B ,其中B controller只是显示下半部分;
如下图效果:
实现这种的方案很多,可以用添加View方法, 也可以用UIWindows 来实现。
但是我这边是想用presentViewController 实现,但是A present B之后,之前的A就会消失,不会和B 覆盖显示,因此就相当了截取A试图之后在present B。
具体看看实现方案吧:
方法一:
这个方法获取的到图片不会失真
1 -(UIImage *)captureImageFromViewLow:(UIView *)orgView { 2 //获取指定View的图片 3 UIGraphicsBeginImageContextWithOptions(orgView.bounds.size, NO, 0.0); 4 CGContextRef context = UIGraphicsGetCurrentContext(); 5 [orgView.layer renderInContext:context]; 6 UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 7 UIGraphicsEndImageContext(); 8 return image; 9 }
方法二:
截取的图片覆盖重新展示之后,会出现失真现象
//获取全屏图片 -(UIImage *)fullScreenshots{ UIWindow *screenWindow = [[UIApplicationsharedApplication] keyWindow]; UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window [screenWindow.layerrenderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewImage; }
综合这两个方案,最终我选择了方案一
时间: 2024-10-12 19:11:27