Swift 系统分享视频(UIActivityViewController)

前端之家收集整理的这篇文章主要介绍了Swift 系统分享视频(UIActivityViewController)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

UIActivityViewController介绍

系统分享功能使用UIActivityViewController实现,此类能够实现把要分享内容分享到社交媒体、短信、电子邮件等,分享内容可以是文本、图片链接、视频等。

初始化

UIActivityViewController(activityItems: <#T##[Any]#>,applicationActivities: <#T##[UIActivity]?#>)

UIActivityViewController的初始化需要传递两个参数,第一个参数activityItems是要分享内容,该数组中的对象类型可以是任意的。
如下:

var activityItems = ["要分享内容",UIImage.init(named: "要分享图片名称")] as [Any]
UIActivityViewController(activityItems: activityItems,applicationActivities: nil)
如果分享内容是同一类型,可以不加 as [Any],否则的话,就得加上

第二个参数applicationActivities 表示应用程序支持自定义服务的对象数组,一个我们一般写为nil。
如果我们需要自定义服务类型,就需要创建个CustomUIActicity,继承UIActivity

class CustomUIActicity: UIActivity {
}

同时需要复写如下方法

1. activityType
 2. activityTitle
 3. activityImage
 4. canPerform(withActivityItems:)
 5. prepare(withActivityItems:)
 6. activityCategory
activityType是提供的服务类型的标识符,一般返回自定义的类名。 activityTitleactivityImage 自定的服务的标题logocanPerform(withActivityItems:)分享内容做下预判断,看是否需要进行分享prepare(withActivityItems:)点击分享按钮后,对分享进行操作。 activityCategory分享的类型,分为share和action.

分享文字图片链接

先定义要分享内容

let textShare = "分享标题。"
 let imageShare = #imageLiteral(resourceName: "icon_tab1_select")
 let urlShare = URL(string: "http://www.baidu.com")
 let activityItems = [textShare,imageShare,urlShare] as [Any]

按照上边的初始化流程,进行初始化

let toVC = UIActivityViewController(activityItems: activityItems,applicationActivities: nil)
present(toVC,animated: true,completion: nil)

分享视频

先定义个视频的URL

let videoUrl = URL(fileURLWithPath: Bundle.main.path(forResource: "test",ofType: "mp4") ?? "")

present一下

let activityVC = UIActivityViewController(activityItems: [videoUrl],completion: nil)

分享自定义UIActivity

首选自定义个CustomUIActicity,并复写相关方法

class CustomUIActicity: UIActivity {
    //分享标题
    override var activityTitle: String? {
        return "一品大帅"
    }
    //分享logo
    override var activityImage: UIImage? {
        return UIImage.init(named: "icon_tab1_select")
    }
    //提供的服务类型的标识符
    override var activityType: UIActivityType? {
        return UIActivityType.init(CustomUIActicity.self.description())
    }
    //分享类型
    override class var activityCategory: UIActivityCategory {
        return .action
    }
    ///此处对要分享内容做操作
    override func prepare(withActivityItems activityItems: [Any]) {
       activityDidFinish(true)
    }
    ///此处预判断下,是否允许进行分享
    override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
        return true
    }
}

创建要分享内容

let toVC = UIActivityViewController(activityItems: ["分享标题"],applicationActivities: [CustomUIActicity()])
present(toVC,completion: nil)
UIActivityViewController的第二个参数 applicationActivities传入的是我们自定义的CustomUIActicity。

如果我们需要对分享结果做监听,采用如下写法

toVC.completionWithItemsHandler = {(_ activityType: UIActivityType?,_ completed: Bool,_ returnedItems: [Any]?,_ activityError: Error?) -> Void in
            print(completed ? "成功" : "失败")
        }
GIt地址: https://github.com/LSnumber1/...
原文链接:https://www.f2er.com/swift/320594.html

猜你在找的Swift相关文章