#UIActivityViewControllerでUIImageのプレビューをなんとかしたい
##動機
自作アプリでUIActivityViewControllerを使ってみたけど、サムネイルがアプリアイコンになってしまう。
「メモ」アプリみたいに、シェアする画像をサムネイルに使いたい。
を読んでも、コードがよく分からなかったので、
を参考にしてやってみた。
#やり方
LinkPresentation frameworkをインポート
import LinkPresentation
UIViewControllerに変数を宣言する
var shareImage: UIImage? //シェアするイメージ
UIActivityViewControllerの呼び出し
[shareImage, self]をactivityItemsにセットする
selfをセットするのは、ViewControllerにUIActivityItemSourceを実装してあげるといいらしいので.
shareImage = シェアするイメージ
let share = UIActivityViewController(activityItems: [shareImage, self], applicationActivities: nil)
present(share, animated: true, completion: nil)
UIViewControllerに、UIActivityItemSourceのメソッドを実装してあげる
extension viewController : UIActivityItemSource {
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return ""
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return nil
}
func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? {
let imageProvider = NSItemProvider(object: shareImage!)
let metadata = LPLinkMetadata()
metadata.imageProvider = imageProvider
return metadata
}
}
これで、サムネイルがうまく表示される。
UIActivityItemSourceを扱うclassを作れるとさらに良さげ。