潭州教育网站开发,企业网站维护,福田祥菱m2柴油版,wordpress视频插件wiOS自带的分享控件可以完成绝大部分的分享需求。 它可以不需要集成微信、QQ等第三方SDK就可以实现分享#xff08;需要在弹出视图里面点击更多打开开关#xff09;到微信好友、朋友圈等,功能很强大#xff0c;也很方便。
一、系统分享两个步骤
UIActivity配置分享的内容和…iOS自带的分享控件可以完成绝大部分的分享需求。 它可以不需要集成微信、QQ等第三方SDK就可以实现分享需要在弹出视图里面点击更多打开开关到微信好友、朋友圈等,功能很强大也很方便。
一、系统分享两个步骤
UIActivity配置分享的内容和链接、操作自定义UIActivityViewController弹出分享视图
1. UIActivity配置分享的内容和链接等
自定义的GXActivity
class GXActivity: UIActivity {private let kActivityType kActivityTypeprivate var text: String?private var img: UIImage?private var url: URL?private var shareContexts: [Any]?// 设置title 和 image会在弹出视图里面出现一个自定义的应用// title为应用名称 image为应用图标 shareContext是存放分享的内容的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}// 准备分享所进行的方法通常在这个方法里面把item中的东西保存下来,items就是要传输的数据override func prepare(withActivityItems activityItems: [Any]) {print(activityItems --- \(activityItems))}override func perform() {// 在这里写你自定义的应用 分享点击以后需要做的操作比如点击需要打开链接、复制等等self.activityDidFinish(true)}
}UIActivityViewController弹出视图
class GXSystemShare: NSObject {public var parentVC: UIViewController?public static let manager GXSystemShare()private override init() {super.init()}/// 这里我设置了配置链接是可选的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])// 表示去掉不想显示的按钮 即第一点里面所包含的type 放到这里activityVC.excludedActivityTypes []// activityVC.isModalInPopover trueshareVC.present(activityVC, animated: true, completion: nil)}
}