Получить скриншот текущего экрана в iOS/swift для обмена
Я хотел бы включить на своем телефоне функцию, позволяющую пользователям нажимать кнопку "Поделиться", и тогда они смогут отправлять своим друзьям текстовое сообщение, которое по умолчанию содержит изображение приложения (прямо перед тем, как пользователь нажал кнопку "Поделиться"). Я не могу понять, как это сделать - и всякий раз, когда я ищу, как это сделать, все, что я получаю, - это уроки / ответы о том, как делиться изображениями в библиотеке фотографий телефона или с их камеры. Любая идея о том, как это сделать!
3 ответа
// создать изображение из скриншота
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// поделиться изображением
var imagesToShare = [AnyObject]()
imagesToShare.append(image)
let activityViewController = UIActivityViewController(activityItems: imagesToShare , applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
presentViewController(activityViewController, animated: true, completion: nil)
UIGraphicsBeginImageContext(self.view.bounds.size)
self.view.drawHierarchy(in: view.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Чтобы поделиться своим экраном непосредственно перед тем, как пользователь нажмет кнопку "Поделиться", сначала вам нужно будет изменить вид экрана на изображение и поделиться им.
Чтобы изменить свое представление на изображение, вы можете добавить это расширение в свой код.
//UIView extension which converts the UIView into an image.
extension UIView {
func toImage() -> UIImage {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)
drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Передайте представление вашего ViewController туда, например:
let imageToShare = self.view.toImage()
let activityItems : NSMutableArray = []()
activityItems.addObject(imageToShare)
let activityVC = UIActivityViewController(activityItems:activityItems as [AnyObject] , applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: nil)
Я надеюсь, что это помогает вам.