Захваченное изображение UIView размыто на полном экране - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь захватить 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 голосов
/ 03 мая 2018

Из яблочной документации

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

шкала

Коэффициент масштабирования, применяемый к растровому изображению. Если указать значение 0,0, коэффициент масштабирования устанавливается равным коэффициенту масштабирования основного экрана устройства.

так что вы устанавливаете масштаб на ноль, вы должны установить на 3 или 2

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0)
0 голосов
/ 02 мая 2018

Мое лучшее предположение, что вы не устанавливаете масштаб вашего слоя для рендеринга.

layer.contentsScale = [UIScreen mainScreen].scale;

Если оставить его по умолчанию (1), вы получите размытые или пиксельные снимки на устройствах с сетчаткой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...