iOS:Coregraphics图像质量差

iOS:Coregraphics图像质量差,ios,uiview,uiimage,core-graphics,uigraphicscontext,Ios,Uiview,Uiimage,Core Graphics,Uigraphicscontext,我不确定是否可以提高图像质量,但下面的代码在PDF中显示了非常差的图像质量。我知道从视图生成图像的标准代码,但我能做些什么来指定图像质量或改进它吗 - (void)renderView:(UIView*)view { UIGraphicsBeginImageContext(view.frame.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewAsImage =

我不确定是否可以提高图像质量,但下面的代码在PDF中显示了非常差的图像质量。我知道从视图生成图像的标准代码,但我能做些什么来指定图像质量或改进它吗

- (void)renderView:(UIView*)view {
    UIGraphicsBeginImageContext(view.frame.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewAsImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [viewAsImage drawInRect:rect];
}

您可能需要创建比例为2(视网膜)的图形上下文,而不是默认的1。为此,请使用
UIGraphicsBeginImageContextWithOptions(view.frame.size,YES,0.0)。这将创建一个具有不透明目标的图像上下文(如果渲染透明图像,可以将第二个参数设置为
NO
),并具有设备主屏幕的比例因子。

大小加倍

- (void)renderView:(UIView*)view {
    CGSize newSize = view.frame.size;
    newSize.width = newSize.width * [UIScreen mainScreen].nativeScale;
    newSize.height = newSize.height * [UIScreen mainScreen].nativeScale;

    UIGraphicsBeginImageContext(newSize);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewAsImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [viewAsImage drawInRect:rect];
}

感谢它确实提高了视图的图像质量,但不确定TableVIEWS的图像质量仍然很差!我的大小调整代码可能有问题。无论如何,谢谢。对于
UIBarButtonItem
,第二个参数必须是
false