框架Social.framework
导入框架Social.framework,集成系统分享时候我们会用到UIActivityViewController这个类的。
利用系统分享内容如下
fileprivate func systemShareAlert() {
let url = URL.init(string: urlTitle)!//网络连接
var array: [Any] = ["报表统计",UIImage.init(named: "logo"), url]
if filePath != nil {
array = [filePath!]//本地文件的话就
}
let activityVC = UIActivityViewController.init(activityItems: array, applicationActivities: nil)
self.present(activityVC, animated: true) {
}
activityVC.completionWithItemsHandler = {[weak self](type, completed, items, error) in
if completed {
print("分享成功")
}else {
print("分享失败")
}
}
}
自定义UIActivity
可以看到系统:UIActivity,那些属性
调用自定义UIActivity
//自定义调用
let activityVC = UIActivityViewController.init(activityItems: array, applicationActivities: [YCustomActivity.init()])
import UIKit
class YCustomActivity: UIActivity {
fileprivate var title: String?
// fileprivate var url: URL?
fileprivate var image: UIImage?
fileprivate var type: UIActivity.ActivityType?
override init() {
super.init()
}
init(title: String?, activityImage: UIImage?, type: UIActivity.ActivityType?) {
super.init()
self.title = title
self.image = activityImage
// self.url = url
self.type = type
}
/**
决定自定义YCustomActivity在UIActivityViewController中显示的位置。
最上层:AirDrop
中层:Share,即UIActivityCategoryShare
中层:Action,即UIActivityCategoryAction
*/
static func activityCategory() -> UIActivity.Category {
return UIActivity.Category.action
}
override var activityTitle: String? {
get {
return title//设置UIActivity标题
}
}
override var activityType: UIActivity.ActivityType? {
get {
return type//设置UIActivity类型
}
}
override var activityImage: UIImage? {
get {
return image//设置UIActivity图片
}
}
override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
return true
}
/**
准备分享所进行的方法,通常在这个方法里面,把item中的东西保存下来,items就是要传输的数据。
*/
override func prepare(withActivityItems activityItems: [Any]) {
}
/**
1、这里就可以关联外面的app进行分享操作了
2、也可以进行一些数据的保存等操作
3、操作的最后必须使用下面方法告诉系统分享结束了
*/
override func perform() {
self.activityDidFinish(true)//设置UIActivity响应事件
}
}