我有这行代码来截取uiview的截图:
- (UIImage *)imageWithView:(UIView *)view {
UIImage *viewImage = nil;
float height;
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if(orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight){
height = view.frame.size.height;
}else{
height = 730;
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, height), YES, 0.0);
[view drawViewHierarchyInRect:CGRectMake(0, -60, view.bounds.size.width, height) afterScreenUpdates:YES];
viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
...在这个uiview中是UIWebView。
每次uiwebview完成加载时我调用的- (UIImage *)imageWithView:(UIView *)view
方法。还有我的问题:当我打开一些像google这样的小网页时,它会花费一些kb的内存,但是当我打开像bbc,cnn,yahoo或stackoverflow这样的biger时,它可能需要80mb的内存使用量。
cnn.com打开时有仪器的快照。 几秒钟之后,它会重新发布,但我不想要那么大的内存使用量,因为你可以想象,在这几秒钟内,uiwebview会变得多么无用。
那么,你有什么建议,如何拍摄uiwebview的大纲,没有如此大的内存使用量,我甚至不需要这个uiimage
的高质量,因为我把它放在120 * 80 {{1在其中一个屏幕角落里。
答案 0 :(得分:4)
UIGraphicsBeginImageContextWithOptions中的最后一个参数是scale。如果您知道只需要Web视图的低分辨率渲染,请尝试设置小于1.0的比例值。
UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, height), YES, 0.2);