菲律賓 做菠菜網(wǎng)站視頻外鏈在線生成
iOS自帶的分享控件可以完成絕大部分的分享需求。
它可以不需要集成微信、QQ等第三方SDK就可以實(shí)現(xiàn)分享(需要在彈出視圖里面點(diǎn)擊更多打開開關(guān))到微信好友、朋友圈等,功能很強(qiáng)大,也很方便。
一、系統(tǒng)分享兩個步驟
- UIActivity配置分享的內(nèi)容和鏈接、操作(自定義)
- UIActivityViewController彈出分享視圖
1. UIActivity配置分享的內(nèi)容和鏈接等
自定義的GXActivity
class GXActivity: UIActivity {private let kActivityType = "kActivityType"private var text: String?private var img: UIImage?private var url: URL?private var shareContexts: [Any]?// 設(shè)置title 和 image會在彈出視圖里面出現(xiàn)一個自定義的應(yīng)用,// title為應(yīng)用名稱 image為應(yīng)用圖標(biāo) shareContext是存放分享的內(nèi)容的convenience init(title: String?, image: UIImage?, url: URL?, shareContext: [Any]) {self.init()self.text = titleself.img = imageif url != nil {self.url = url}self.shareContexts = shareContext}override init() {super.init()}// default is UIActivityCategoryAction.override class var activityCategory: UIActivity.Category {return .share}// default returns nil. subclass must override and must return non-nil valueoverride var activityImage: UIImage? {return img}// default returns nil. subclass must override and must return non-nil valueoverride var activityTitle: String? {return text}var activityUrl: URL? {return url}// default returns nil. subclass may override to return custom activity type that is reported to completion handleroverride var activityType: UIActivity.ActivityType? {return UIActivity.ActivityType(rawValue: kActivityType)}override func canPerform(withActivityItems activityItems: [Any]) -> Bool {if activityItems.count > 0 {return true}return false}// 準(zhǔn)備分享所進(jìn)行的方法,通常在這個方法里面,把item中的東西保存下來,items就是要傳輸?shù)臄?shù)據(jù)override func prepare(withActivityItems activityItems: [Any]) {print("activityItems --- \(activityItems)")}override func perform() {// 在這里寫你自定義的應(yīng)用 分享點(diǎn)擊以后需要做的操作,比如點(diǎn)擊需要打開鏈接、復(fù)制等等self.activityDidFinish(true)}
}
UIActivityViewController彈出視圖
class GXSystemShare: NSObject {public var parentVC: UIViewController?public static let manager = GXSystemShare()private override init() {super.init()}/// 這里我設(shè)置了配置鏈接是可選的func shrare(shareVC: UIViewController, orText: String, trText: String, shareUrl: URL? = nil) {parentVC = shareVCvar activityItems = [Any]()if shareUrl == nil {activityItems = [orText, trText]} else {activityItems = [orText, trText, shareUrl as Any]}let activity = GXActivity(title: "Demo AP", image: UIImage(named: "iPhoneApp.png"), url: shareUrl, shareContext: activityItems)let activityVC = UIActivityViewController(activityItems: activityItems, applicationActivities: [activity])// 表示去掉不想顯示的按鈕 即第一點(diǎn)里面所包含的type 放到這里activityVC.excludedActivityTypes = []// activityVC.isModalInPopover = trueshareVC.present(activityVC, animated: true, completion: nil)}
}