[swift] UIActivityの実装
目次
UIActivityの実装
UIActivityとは、SNSへの投稿やメール送信から、画像保存に連絡先追加などの機能を一覧から選択できる機能
*ただしiPadの場合はUIActivityという機能がないため、UIPopoverControllerを使用しないとクラッシュするので注意 = iPhoneとiPadを判定
サービスの種類
タイプ名 | 概要 |
---|---|
UIActivityTypePostToFacebook | Facebookへ投稿 |
UIActivityTypePostToTwitter | Twitterへ投稿 |
UIActivityTypeMessage | メッセージを送信 |
UIActivityTypeMail | メールを送信 |
UIActivityTypePrint | プリントダイアログを立ち上げる |
UIActivityTypeCopyToPasteboard | クリックボードに貼り付け |
UIActivityTypeAssignToContact | 連絡先を呼び出す |
UIActivityTypeSaveToCameraRoll | カメラロールに保存 |
UIActivityTypeAddToReadingList | Safariのリーディングリストに追加 |
UIActivityTypePostToFlickr | Flickrへ投稿 |
UIActivityTypePostToVimeo | Vimeoへ投稿 |
UIActivityTypePostToWeibo | 新浪微博へ投稿 |
UIActivityTypePostToTencentWeibo | 騰訊微博へ投稿 |
UIActivityTypeAirDrop | AirDropでの共有 |
サンプルコード
import Accounts
@IBAction func share(sender: UIButton) { // 共有する項目 let shareText = "Apple - Apple Watch" //本文 let shareWebsite = NSURL(string: "https://www.apple.com/jp/watch/")! //URL部分 let shareImage = UIImage(named: "shareSample.png")! //添付したい画像 let activityItems = [shareText, shareWebsite, shareImage] // 初期化処理 let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: nil) // 使用しないアクティビティタイプ let excludedActivityTypes = [ UIActivityTypePostToFacebook, UIActivityTypePostToTwitter, UIActivityTypeMessage, UIActivityTypeSaveToCameraRoll, UIActivityTypePrint ] activityVC.excludedActivityTypes = excludedActivityTypes activityVC.popoverPresentationController?.sourceView = self.view //これがないとiPadではクラッシュする // UIActivityViewControllerを表示 self.presentViewController(activityVC, animated: true, completion: nil) }
Swift4では以下の通り
@IBAction func share(sender: UIButton) { // 共有する項目 let shareText = "Apple - Apple Watch" //本文 let shareWebsite = NSURL(string: "https://www.apple.com/jp/watch/")! //URL部分 let shareImage = UIImage(named: "shareSample.png")! //添付したい画像 let activityItems = [shareText, shareWebsite, shareImage] // 初期化処理 let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: nil) // 使用しないアクティビティタイプ let excludedActivityTypes = [ UIActivityTypePostToFacebook, UIActivityTypePostToTwitter, UIActivityTypeMessage, UIActivityTypeSaveToCameraRoll, UIActivityTypePrint ] activityVC.excludedActivityTypes = excludedActivityTypes activityVC.popoverPresentationController?.sourceView = self.view //これがないとiPadではクラッシュする // UIActivityViewControllerを表示 self.present(activityVC, animated: true, completion: nil) }