よくあるこの画面。UIActivityViewControllerを使用すると簡単に実装できる。
シェア画面の起動
UIActivityViewControllerのactivityItemsに各SNSに渡したいオブジェクトをセットすればよい。String、UIImage、URLなどがある。尚、Facebookはテキストのセットは受け付けなかった。
@IBAction func share(_ sender: Any) { let activityViewController = UIActivityViewController(activityItems: ["メッセージを入力してください",UIImage(name:"画像ファイル名")], applicationActivities: nil) self.present(activityViewController, animated: true, completion: nil) }
画像が添付できない場合
Twitter、Facebookに画像を添付しようとすると以下のようなエラーが出る場合がある。
Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}
添付しようとしている画像のサイズが大きすぎてアップロードに失敗しているようなので、サイズダウンしてみたところ正常に添付できた。
付録. UIImageのサイズをダウンする
例では元の画像の1/3にした。
func DownSize(_ image:UIImage)->UIImage{ //縦、横を元画像の1/3にする let resizedSize = CGSize(width: image.size.width / 3, height: image.size.height / 3) //WithOptionsのほうが画像が荒くなりにくい。らしい。 UIGraphicsBeginImageContextWithOptions(resizedSize, false, 0.0) image.draw(in: CGRect(x: 0, y: 0, width: resizedSize.width, height: resizedSize.height)) let resizedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return resizedImage! }
リンク
リンク