gpt4 book ai didi

ios - UIGraphicsBeginImageContextWithOptions 非常严重的内存灾难

转载 作者:行者123 更新时间:2023-11-28 19:03:47 25 4
gpt4 key购买 nike

我有这行代码来截取 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。

这个 - (UIImage *)imageWithView:(UIView *)view 方法我在每次 uiwebview 完成加载时调用。我的问题是:当我打开像 google 这样的小网页时,它会占用一些内存,但是当我打开像 bbc、cnn、yahoo 或 stackoverflow 这样更大的网页时,它可能会占用多达 80mb 的内存。

打开cnn.com时有仪器快照。 enter image description here几秒钟后它会出现,但我不希望使用那么大的内存,因为您可能会想象,在这些秒内 uiwebview 变得多么无用。

那么,你有什么建议,如何拍摄 uiwebview 的屏幕截图,没有那么大的内存使用,我什至不需要质量好的 uiimage,因为我把它放在 120*80 中uiimageview 在屏幕的一个角落。

最佳答案

UIGraphicsBeginImageContextWithOptions 中的最后一个参数是比例。如果您知道您只需要 Web View 的低分辨率呈现,请尝试将比例值设置为小于 1.0。

UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, height), YES, 0.2);

关于ios - UIGraphicsBeginImageContextWithOptions 非常严重的内存灾难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com