我尝试截取uiwebview
的截图并将其与观察者一起发送到另一个类中的另一个UIImageView。
我用这种方法截取屏幕截图:
-(UIImage*)takeScreenshoot{
@autoreleasepool {
UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width,self.view.frame.size.height));
CGContextRef context = UIGraphicsGetCurrentContext();
[self.webPage.layer renderInContext:context];
UIImage *__weak screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenShot;
}
}
但后来我有问题。每当我用这种方法截取屏幕截图时,内存率大约增加到10-15mb,而且它没有意识到。如果我在每个webviewdidfinishload中截取屏幕截图,你可以想象它可以占用多少内存!
我该如何解决这个问题?
答案 0 :(得分:1)
如果可能,请尝试使用[UIScreen snapshotViewAfterScreenUpdates]
returns UIView
。
这是当前显示内容的快照(应用程序的快照)。
甚至苹果也说“this method is faster than trying to render the contents of the screen into a bitmap image yourself
。”
根据您的代码,您将传递此位图图像以仅显示在其他一些UIImageView中。所以我认为使用UIScreen方法是合适的。
仅显示UIWebView部件 - >
创建另一个UIView
实例。
将其框架设置为webView的框架
现在将此screenShot视图作为subView添加到createdView并设置其框架,以便显示webView部分。
答案 1 :(得分:-1)
屏幕截图后,请尝试拨打CGContextRelease(context);
。
或者正如@Greg所说,删除该行并直接使用UIGraphicsGetCurrentContext()