Edited at

[Swift]UIActivityの使い方まとめ

More than 3 years have passed since last update.

開発中のアプリで、シェアボタンを押したら下からピロッと出てくる機能を実装したかったものの、名称がわからずだいぶさまよい歩きました。無知とは辛いものです。

そんな過去の自分に捧げたいメモ書きを残します。

サンプルリポジトリ - https://github.com/nashirox/uiactivity-sample


UIActivityとは?

SNSへの投稿やメール送信から、画像保存に連絡先追加などの機能を一覧から選択できる機能です。

image


使用できるサービスの種類

UIActivityでは次のサービスを設定することができます。

タイプ名
概要

UIActivityTypePostToFacebook
Facebookへ投稿

UIActivityTypePostToTwitter
Twitterへ投稿

UIActivityTypeMessage
メッセージを送信

UIActivityTypeMail
メールを送信

UIActivityTypePrint
プリントダイアログを立ち上げる

UIActivityTypeCopyToPasteboard
クリックボードに貼り付け

UIActivityTypeAssignToContact
連絡先を呼び出す

UIActivityTypeSaveToCameraRoll
カメラロールに保存

UIActivityTypeAddToReadingList
Safariのリーディングリストに追加

UIActivityTypePostToFlickr
Flickrへ投稿

UIActivityTypePostToVimeo
Vimeoへ投稿

UIActivityTypePostToWeibo
新浪微博へ投稿

UIActivityTypePostToTencentWeibo
騰訊微博へ投稿

UIActivityTypeAirDrop
AirDropでの共有


実装方法


ストーリーボード

新規プロジェクトで、真ん中にシェア用ボタンを配置します。

スクリーンショット 2015-03-20 13.52.58.png

Action接続、UIButtonタイプでshareという名前でViewControllerに紐付けます。

スクリーンショット 2015-03-20 14.06.21.png


コード

Accountsフレームワークを最初にインポートしてください。あとは次のような感じです。


ViewController.swift

import UIKit

import Accounts

class ViewController: UIViewController {

@IBAction func share(sender: UIButton) {

// 共有する項目
let shareText = "Apple - Apple Watch"
let shareWebsite = NSURL(string: "https://www.apple.com/jp/watch/")!
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

// UIActivityViewControllerを表示
self.presentViewController(activityVC, animated: true, completion: nil)
}

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}



実行結果

テキストやイメージファイル、URLの組み合わせで立ち上がるダイアログもちょっとかわるので、参考までにスクショをのせておきます。

タイプ名
text + URL + image
text + URL

基本表示
withimage.png
写真 2015-03-20 20 42 04.png

Twitter

twitter2

Facebook
facebook1
facebook2

メール
写真_2015-03-20_14_27_16.png
mail.png

メッセージ
imessage
message.png

Flickr
flickr
非表示


その他


英語になってる場合

Project -> LocalizationsにJapanes (ja)を追加してください。

設定


LINEを追加する

Cocoapod でLineActivityをインストールしてください。

pod "LINEActivity", "~> 0.2.0"

pod install後、ブリッジングヘッダに追記します。


yourAppName-Bridging-Header.h

#import "LINEActivity.h"



あとは、先のUIActivityViewControllerの引数 applicationActivitiesに配列で追加するだけです。


ViewController.swift

let LineKit = LINEActivity()

let myApplicationActivities = [LineKit]

// 標準以外のサービスも追加
let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: myApplicationActivities)


これで追加されました。モノクロなのは仕様なので、カラーにしたい場合はQiitaのこの投稿を参考にしてください。

line.png