Итак, у меня есть 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
Спасибо за ваш ввод. Это похоже на альтернативный метод, который я попробовал. К сожалению, я столкнулся с проблемой копирования только изображения, но не текста, который я накладываю на изображение. Любая идея, как это решить? –
Любые подзаголовки будут включены. Возможно ли, что ваш текст не является подвидным представлением, которое вы пытаетесь захватить? – squarehippo10
Можем ли мы включить subviews в UIImageView через раскадровку? Это не позволило мне. Одним из возможных решений может быть включение UIImageView и UITextLabels внутри UIView и запуск функции в UIView. Я предполагаю, что программное добавление UITextFields в UIImageView также потребует программных добавлений, которые я хочу узнать, если он решает проблему. –