2016-04-22 2 views
2

Я использую ниже код в swift, чтобы захватить UIImageView на одно изображение. Он работает, но изображение не такое же качество, как изображение, отображаемое в UIImageView. Есть ли способ настроить качество при захвате этого изображения?Свободное качество при визуализации UIImageView в swift

private func getScreenshow(imageView:UIImageView) -> UIImage{ 

    UIGraphicsBeginImageContext(self.imageView.frame.size) 
    let context = UIGraphicsGetCurrentContext() 

    imageView.layer.renderInContext(context!) 
    let screenShot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(screenShot, nil, nil, nil) 
    return screenShot 
} 

ответ

2

После некоторого поиска я выяснил проблему. Я использую ниже код для замены «UIGraphicsBeginImageContext», и он работает.

UIGraphicsBeginImageContextWithOptions(self.imageView.frame.size, true, 0) 
2

Этот код выглядит довольно странно (почему бы вам не просто использовать imageView.image?), Но я не знаю, полный контекст вашего использования.

Как вы нашли, причиной потери качества является то, что вы игнорируете масштаб сетчатки экрана.

Прочитайте документацию для UIGraphicsBeginImageContext и UIGraphicsBeginImageContextWithOptions, и вы увидите, что первый использует «масштабный коэффициент 1.0».

+0

Потому что на изображении есть много других под-представлений. –

+0

Вопрос был не связан с этим вопросом, так как я конвертировал UIBezierPath в UIImage. Однако ваш комментарий о масштабном коэффициенте был тем, что я проигнорировал. По какой-то причине я поставил шкалу как 1. Я сделал это 0, и все выглядело красиво! Благодаря! :) –

Смежные вопросы