2016-04-10 4 views
1

Итак, у меня есть UIImageView с текстом, наложенным сверху и снизу. Я хочу получить снимок экрана, чтобы у меня появилось новое изображение с текстом, наложенным на него. Это код, с которым я работал, но я не могу правильно выполнить скриншот моего объекта UIImageView.Как сделать снимок экрана одного объекта просмотра вместо всего экрана?

func generateImage() -> UIImage 
{ 
    // Render view to an image 
    UIGraphicsBeginImageContext(self.view.frame.size) 
    view.drawViewHierarchyInRect(self.imageView.frame, 
     afterScreenUpdates: true) 
    let memeImage: UIImage = 
    UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return memeImage 
} 

Кроме того, я также попытался код ниже, хотя изображение, сохраненное правильный размер/область экрана, он заканчивает с размытой версией того, что я сделал скриншот:

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

imageView.layer.renderInContext(context!) // tried drawInContext but it didn't work at all 
let memeImage = UIGraphicsGetImageFromCurrentImageContext() 

UIGraphicsEndImageContext() 
return memeImage 

ответ

1

Во-первых, использование UIGraphicsBeginImageContextWithOptions позволит вам настроить масштабный коэффициент в соответствии с размером экрана. Во-вторых, прохождение в представлении, которое вы хотите захватить, гарантирует, что вы работаете с правильным представлением/подпунктами.

func generateImage(currentView: UIView) -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(currentView.frame.size, true, 0.0) 
     currentView.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
     let memeImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     //UIImageWriteToSavedPhotosAlbum(memeImage, nil, nil, nil) 

     return memeImage 
    } 
+0

Спасибо за ваш ввод. Это похоже на альтернативный метод, который я попробовал. К сожалению, я столкнулся с проблемой копирования только изображения, но не текста, который я накладываю на изображение. Любая идея, как это решить? –

+1

Любые подзаголовки будут включены. Возможно ли, что ваш текст не является подвидным представлением, которое вы пытаетесь захватить? – squarehippo10

+1

Можем ли мы включить subviews в UIImageView через раскадровку? Это не позволило мне. Одним из возможных решений может быть включение UIImageView и UITextLabels внутри UIView и запуск функции в UIView. Я предполагаю, что программное добавление UITextFields в UIImageView также потребует программных добавлений, которые я хочу узнать, если он решает проблему. –

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