应用程序崩溃drawViewHierarchyInRect
我的应用程序使用大图像(5MB)来标记。但是,应用程序正在崩溃,没有任何错误消息。 下面是我用应用程序崩溃drawViewHierarchyInRect
UIGraphicsBeginImageContext(CGSizeMake(_drawingUV.drawingImgView.image.size.width, _drawingUV.drawingImgView.image.size.height));
{
CGContextRef context = UIGraphicsGetCurrentContext();
if ([_drawingUV.drawingImgView respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)])
{
[_drawingUV.drawingImgView drawViewHierarchyInRect:_drawingUV.drawingImgView.bounds afterScreenUpdates:YES];
}
else
{
[_drawingUV.drawingImgView.layer renderInContext:context];
}
screenShot = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext();
我已经尝试了所有可能找到一个解决方案最近两天的代码。但不能。
该函数在UI对象下面使用。 主视图有视图,里面有UIScrollView,里面有UIScrollView有UIImageView。所以我需要得到这张UIImageView的截图。我使用这些视图来滚动和标记图像视图。 这个崩溃的任何想法?
我用这一切的时候没有问题:
- (UIImage *)screenshot {
UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
UIGraphicsBeginImageContextWithOptions(mainWindow.bounds.size, NO, 1.0);
[mainWindow drawViewHierarchyInRect:mainWindow.bounds afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
在这里你正在获取主屏幕截图。我想获取imageview截图。此图像视图可以滚动并且图像高度= 6000和宽度= 6000+。 –
我用UIImageView 6000x6000测试过它,它在模拟器上工作正常。请记住,存储6Kx6K图像所需的内存为144MB - Xcode的内存使用情况监视器在渲染视图层次结构时达到了1GB以上的峰值。 – norders
你有没有试图消除外部大括号“{..}”?另外,你真的需要支持'renderInContext'(iOS 6及以下版本)吗? – norders
是的。我试过了。 renderInContext可以被删除。此图像视图可以滚动并且图像高度= 6000和宽度= 6000+。 –