2

我想将 UIView 渲染成 UIImage。但是,我想将它渲染得比屏幕上的大得多,而不需要像素化。

目前我正在使用...

UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
[self.pageViewController.view.layer renderInContext:context];
renderedViewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

我努力了...

self.pageViewController.view.transform = CGAffineTransformMakeScale(4.0f, 4.0f);

这会更改视图的大小,但会在缩放视图之前呈现原始大小。

我也试过...

CGContextScaleCTM(UIGraphicsGetCurrentContext(), 4.0, 4.0);

但这只会放大低分辨率图像,从而导致质量不佳。

设置...

UIView contentScaleFactor

也没有帮助我将 UIView 渲染得更大。

4

1 回答 1

-1

试试这个,如果设备支持视网膜,您将获得 2 倍大小的视图图像

  - (UIImage *)imageOfView:(UIView *)view
{

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);
    } else {
        UIGraphicsBeginImageContext(view.bounds.size);
    }

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}
于 2013-09-05T08:00:25.543 回答