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'の初期化子が見つかりません
何か案は?
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シミュレーターでテストされています
ボタンを作成するだけで、そのアクションが実現します。そして、このようにボタンのアクションをインストールします。
注:設定に移動して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)
}
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)
}
}
ActivityItemsを!でアンラップする必要があるようです。