Поделиться изображением по URL - PullRequest
0 голосов
/ 29 мая 2020

Я создаю приложение изображений со своего веб-сайта WordPress с помощью json, и я использую swift, я хочу поделиться изображением в социальных сетях из моего приложения, в настоящее время я пробовал этот код, он работает, но только с именем изображения, которым я хочу поделиться изображение с URL изображения, возможно ли это?

это мой код

 let myWebsite = NSURL(string: "nice")

           let img: UIImage = UIImage(named:"splash")!

           guard let url = myWebsite else {
               print("nothing found")
               return
           }

           let shareItems:Array = [img,url]
           let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
        activityViewController.excludedActivityTypes = [UIActivity.ActivityType.print, UIActivity.ActivityType.postToWeibo, UIActivity.ActivityType.copyToPasteboard, UIActivity.ActivityType.addToReadingList, UIActivity.ActivityType.postToVimeo]
        self!.present(activityViewController, animated: true, completion: nil)

1 Ответ

1 голос
/ 29 мая 2020

Если вам нужно загрузить изображение, а затем поделиться им, вы должны сделать это отдельно, не существует единого метода, который сделал бы это за вас. Вот как:

func shareImageFromUrl(_ string: String) {

    guard let myUrl = URL(string: string) else {
        print("Invalid url!")
        return
    }

    URLSession.shared.dataTask(with: myUrl) { (data, _, _) in
        guard let data = data,
            let image = UIImage(data: data) else
        { return }

        let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
        activityViewController.excludedActivityTypes = [UIActivity.ActivityType.print, UIActivity.ActivityType.postToWeibo, UIActivity.ActivityType.copyToPasteboard, UIActivity.ActivityType.addToReadingList, UIActivity.ActivityType.postToVimeo]
        DispatchQueue.main.async {
            self.present(activityViewController, animated: true, completion: nil)
        }
    }.resume()
}
...