web-dev-qa-db-ja.com

UIActivityViewControllerを使用した画像の共有

UIImageViewを使用してUIActivityViewControllerから画像を共有しますか?

UIActivityViewControllerを使用して画像を共有しようとしていますが、エラーが発生します:

func shareIMG(){
    let activityItems = [self.imageView.image]
    let avc = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)

    self.presentViewController(avc, animated: true, completion: nil)
}

エラーメッセージ:

タイプ '(activityItems:[UIImage?]、applicationActivities:nil)'の引数リストを受け入れるタイプ 'UIActivityViewController'の初期化子が見つかりません

何か案は?

7
Eri-Sklii
let activityItem: [AnyObject] = [self.imageView.image as! AnyObject]

let avc = UIActivityViewController(activityItems: activityItem as [AnyObject], applicationActivities: nil)

self.presentViewController(avc, animated: true, completion: nil)

:上記のコードはXcode6.3シミュレーターでテストされています

12

ボタンを作成するだけで、そのアクションが実現します。そして、このようにボタンのアクションをインストールします。

注:設定に移動してFacebookまたはTwitterにログインする必要があります。次にこのようにします。

@IBAction func onShareTouched(sender: AnyObject) {

    print("share")

    let myShare = "My beautiful photo! <3 <3"
    let image: UIImage = UIImage(named: "yourImageNameHere")

    let shareVC: UIActivityViewController = UIActivityViewController(activityItems: [(image), myShare], applicationActivities: nil)
    self.presentViewController(shareVC, animated: true, completion: nil)

}
4
Khuong

SwiftのiPhoneおよびiPadで機能する完全なコード:

func share(sender: UIButton){
    let img: UIImage = UIImage(named: "lenna")!
    let messageStr:String  = "some sharing text"
    let shareItems:Array = [img, messageStr]

    activityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
    activityViewController!.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo]

    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Phone {
        self.presentViewController(activityViewController!, animated: true, completion: nil)
    } else {
        let popup: UIPopoverController = UIPopoverController(contentViewController: activityViewController!)
        popup.presentPopoverFromRect(sender.bounds, inView: sender, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
    }
}
2
vkalit

ActivityItemsを!でアンラップする必要があるようです。

0
Fred Faust