日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift - 自定义UIActivity分享

發布時間:2024/10/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift - 自定义UIActivity分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UIActivity可以十分方便地將文字、圖片等內容進行分享,比如分享到微信、微博、發送郵件、短信等等。我們不僅可以分享內容出來,也可以在自己的App里添加自己的分享按鈕或隱藏已有的分享按鈕來實現定制的功能。

下面通過繼承UIActivity實現定制按鈕和功能,通過調用UIActivityViewController來展示分享框。 注意:UIActivityView面板有上下兩行,上面一行是分享按鈕(為彩色)。下面一行是動作按鈕(圖片自動變為黑白)。 下面我們分別在上下各添加一個自定義的功能按鈕(“微信”“航歌”)作為演示。
效果圖如下: ??
--- ViewController.swift ---
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import UIKit class ViewController: UIViewController { ????? ????override func viewDidLoad() { ????????super.viewDidLoad() ????} ????override func didReceiveMemoryWarning() { ????????super.didReceiveMemoryWarning() ????} ????? ????//點擊按鈕彈出分享框 ????@IBAction func btnClicked(sender: AnyObject) { ????????//準備分享內容,文本圖片鏈接 ????????let items = ["航歌", UIImage(named:"toSendImage.png")!, ????????????NSURL(fileURLWithPath:"http://hangge.com")!] ????????//新建自定義的分享對象數組 ????????let acts = [WeiXinActivity(),HanggeActivity()] ????????//根據分享內容和自定義的分享按鈕調用分享視圖 ????????var actView:UIActivityViewController = ????????UIActivityViewController(activityItems: items, applicationActivities: acts)??????? ????????//要排除的分享按鈕,不顯示在分享框里 ????????actView.excludedActivityTypes = [UIActivityTypeMail,UIActivityTypeCopyToPasteboard, ????????????UIActivityTypePrint,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll] ????????//顯示分享視圖 ????????self.presentViewController(actView, animated:true, completion:nil) ????} }

?

--- HanggeActivity.swift ---
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 import UIKit class HanggeActivity : UIActivity { ????//用于保存傳遞過來的要分享的數據 ????var text:String! ????var url:NSURL! ????var image:UIImage! ????? ????//顯示在分享框里的名稱 ????override func activityTitle() -> String? { ????????return "航歌" ????} ????? ????//分享框的圖片 ????override func activityImage() -> UIImage? { ????????return UIImage(named:"swift.png") ????} ????? ????//分享類型,在UIActivityViewController.completionHandler回調里可以用于判斷,一般取當前類名 ????override func activityType() -> String? { ????????return HanggeActivity.self.description() ????} ????? ????//按鈕類型(分享按鈕:在第一行,彩色,動作按鈕:在第二行,黑白) ????override class func activityCategory() -> UIActivityCategory{ ????????return UIActivityCategory.Action ????} ????? ????//是否顯示分享按鈕,這里一般根據用戶是否授權,或分享內容是否正確等來決定是否要隱藏分享按鈕 ????override func canPerformWithActivityItems(activityItems: [AnyObject]) -> Bool { ????????for item in activityItems { ????????????if item is UIImage { ????????????????return true ????????????} ????????????if item is String { ????????????????return true ????????????} ????????????if item is NSURL { ????????????????return true ????????????} ????????} ????????return false ????} ????? ????//解析分享數據時調用,可以進行一定的處理 ????override func prepareWithActivityItems(activityItems: [AnyObject]) { ????????println("prepareWithActivityItems") ????????for item in activityItems { ????????????if item is UIImage { ????????????????image = item as! UIImage ????????????} ????????????if item is String { ????????????????text = item as! String ????????????} ????????????if item is NSURL { ????????????????url = item as! NSURL ????????????} ????????} ????} ????? ????//執行分享行為 ????//這里根據自己的應用做相應的處理 ????//例如你可以分享到另外的app例如微信分享,也可以保存數據到照片或其他地方,甚至分享到網絡 ????override func performActivity() { ????????println("performActivity") ????????//具體的執行代碼這邊先省略 ????} ????? ????//分享時調用 ????override func activityViewController() -> UIViewController? { ????????println("activityViewController") ????????return nil ????} ????? ????//完成分享后調用 ????override func activityDidFinish(completed: Bool) { ????????println("activitydidfinish") ????} }

?

--- WeiXinActivity.swift ---

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 import UIKit class WeiXinActivity : UIActivity { ????//用于保存傳遞過來的要分享的數據 ????var text:String! ????var url:NSURL! ????var image:UIImage! ????? ????//顯示在分享框里的名稱 ????override func activityTitle() -> String? { ????????return "微信" ????} ????? ????//分享框的圖片 ????override func activityImage() -> UIImage? { ????????return UIImage(named:"wechat_session") ????} ????? ????//分享類型,在UIActivityViewController.completionHandler回調里可以用于判斷,一般取當前類名 ????override func activityType() -> String? { ????????return WeiXinActivity.self.description() ????} ????? ????//按鈕類型(分享按鈕:在第一行,彩色,動作按鈕:在第二行,黑白) ????override class func activityCategory() -> UIActivityCategory{ ????????return UIActivityCategory.Share ????} ????? ????//是否顯示分享按鈕,這里一般根據用戶是否授權,或分享內容是否正確等來決定是否要隱藏分享按鈕 ????override func canPerformWithActivityItems(activityItems: [AnyObject]) -> Bool { ????????for item in activityItems { ????????????if item is UIImage { ????????????????return true ????????????} ????????????if item is String { ????????????????return true ????????????} ????????????if item is NSURL { ????????????????return true ????????????} ????????} ????????return false ????} ????? ????//解析分享數據時調用,可以進行一定的處理 ????override func prepareWithActivityItems(activityItems: [AnyObject]) { ????????println("prepareWithActivityItems") ????????for item in activityItems { ????????????if item is UIImage { ????????????????image = item as! UIImage ????????????} ????????????if item is String { ????????????????text = item as! String ????????????} ????????????if item is NSURL { ????????????????url = item as! NSURL ????????????} ????????} ????} ????? ????//執行分享行為 ????//這里根據自己的應用做相應的處理 ????//例如你可以分享到另外的app例如微信分享,也可以保存數據到照片或其他地方,甚至分享到網絡 ????override func performActivity() { ????????println("performActivity") ????????//具體的執行代碼這邊先省略 ????} ????? ????//分享時調用 ????override func activityViewController() -> UIViewController? { ????????println("activityViewController") ????????return nil ????} ????? ????//完成分享后調用 ????override func activityDidFinish(completed: Bool) { ????????println("activitydidfinish") ????} }

轉載于:https://www.cnblogs.com/Free-Thinker/p/4838334.html

總結

以上是生活随笔為你收集整理的Swift - 自定义UIActivity分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。