[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)
}