捕获的UIView图像在全屏显示时模糊

时间:2018-05-02 18:28:34

标签: ios objective-c

我试图以相同比例的主屏幕捕捉屏幕的2/3。因此,当我捕获屏幕并在同一设备中全屏显示时,我会得到模糊的图像。如何拍摄较小的部分并在没有质量损失的情况下全屏显示?

//Get image of the view 
- (UIImage *)getScreenshot {
    CGRect rect = [_shareView bounds];
    UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [_shareView.layer renderInContext:context];
    UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return capturedScreen;
}

2 个答案:

答案 0 :(得分:1)

来自Apple文档

func UIGraphicsBeginImageContextWithOptions(_ size: CGSize, 
                                          _ opaque: Bool, 
                                          _ scale: CGFloat)

尺度

要应用于位图的比例因子。如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子。

因此您将比例设置为零,您必须设置为3或2

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0)

答案 1 :(得分:0)

我最好的猜测是你没有设置要渲染的图层比例。

layer.contentsScale = [UIScreen mainScreen].scale;

将其保留为默认值(1)将为您提供视网膜设备上模糊或像素化的捕获。