- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 webview 渲染图像。所以 renderIncontext 方法在 for 循环中调用了 50 多次。在 20 或 30 次后,我的应用程序因更多内存消耗而崩溃。
我使用了这段代码:
UIGraphicsBeginImageContext(CGSizeMake([w floatValue], [h floatValue]));
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, webview.frame);
[self.webview.layer renderInContext:ctx];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
20 次后它崩溃了。我需要它的解决方案。
为什么会这样?有人知道吗?
最佳答案
听起来您正在一个紧凑的循环中创建大量位图图像。您需要保存所需的图像(如果您需要全部图像,则可能保存在磁盘上而不是内存中),并允许自动释放内存中的图像。将循环主体包裹在 @autorelease
block 中,例如:
for (whatever) {
@autorelease {
// Work that makes big autoreleased objects.
}
}
这样你的内存消耗就不会在你的循环中失控。同样,如果您让所有这些 UIImage 对象持久化,您仍然会分配大量内存。将生成的图像保存到磁盘上的临时目录(或其他一些方便的地方),并根据需要单独获取它们。
关于ios - renderInContext 抛出崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15979193/
在使用“ObjectAlloc”在仪器中进行调试时,我注意到为 renderInContext 调用分配了 7meg 内存,但它从未被释放。当我注释掉 renderInContext 调用时,这种情况
我正在尝试在我的 iOS 设备上为某个应用程序保存当前显示的 View ,并且这工作正常。但是,当我尝试以横向保存 UIImageView 时,我遇到了问题。 请参阅描述我的问题的下图: 我正在为这个
我有个问题。当我在 iPad 中使用“renderInContext”时,使用的内存永远不会释放并累积,直到应用程序以“内存警告”级别 = 1 和级别 = 2 关闭 我的代码: CGRect medi
我正在从 webview 渲染图像。所以 renderIncontext 方法在 for 循环中调用了 50 多次。在 20 或 30 次后,我的应用程序因更多内存消耗而崩溃。 我使用了这段代码: U
我在 2448 X 2448 像素的图像上运行此代码。 fullScaleView 也是 2448 X 2448(fullScreenView Rect:{{0, 0}, {2448, 2448}})
背景 我正在使用来自 Chapter 8, Example 14 — Resize and Rotate 的 Erica Saduns Cookbook 示例显然可以调整和旋转 UIImageView
我用 CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; rotationAndPerspectiveTran
我正在渲染多个图层以获得一张最终图像。其中一张图片包含一张脸,另一张图片包含背景,脸部周围有透明渐变,因此隐藏了真实背景。在 iOS6 中它工作得很好,但它在 iOS7 中使用透明渐变创建了一个奇怪的
我可以使用以下代码从核心动画层创建 UIImage: - (UIImage*)contentsImage; { UIGraphicsBeginImageContext([self bounds]
我有一个 View ,里面有多个 View ,还有一个图像演示(又名“封面流”)......而且我需要以编程方式制作屏幕截图! 因为文档说“renderInContext:”不会渲染 3d 动画: “
我有一个相当大的CAShapeLayer我正在渲染。该层是完全静态的,但它包含在 UIScrollView 中所以它可以移动和缩放——基本上,它必须时不时地重新绘制。为了提高滚动的帧率,我设置了 sh
此代码有效: UIGraphicsBeginImageContextWithOptions(aRect.size, NO, 0.0); [self.view drawViewHierarchyInRe
我用这段代码做了截图, CGFloat breed = 768; CGFloat hoogte = 975; CGSize afmeting = CGSizeMake(breed, hoogte);
我正在通过截取 UIView 的屏幕截图来创建 PDF,目前这在配备视网膜显示屏的 iPad3 上运行良好,但在具有较低分辨率屏幕的其他设备上进行测试时,我遇到了文本分辨率问题。 这是我的代码:
我有一个在循环中调用的方法,看起来像这样: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; UIImageView *backg
我正在使用在主线程上执行的以下代码来截取 屏幕外(不是 self.view 的 subview ) View ,然后显示在 中UIImageView。就功能而言,一切正常,但是由于此代码在扩展上运行,
我手动创建了一个 CGBitmapContext: bitmapContext = CGBitmapContextCreate( myImageData, width, height, 8, 4 *
我正在使用此代码从 View 中渲染图像。然后我将其保存到相册中。图像模糊?为什么?有解决办法吗? UIGraphicsBeginImageContext(self.view.bounds.size)
CALayer -drawInContext: 和 -renderInContext: 有什么区别? 最佳答案 当提供自定义 Quartz 绘制内容以在 CALayer 中显示时,您可以覆盖 -dra
在浏览了关于 SO 的所有相关问题后,我了解到 drawViewHierarchyInRect 应该比 renderInContext 快得多,但这不是我所看到的。 这是我的带有时间分析的快照功能:
我是一名优秀的程序员,十分优秀!