macOS Development - NSSharingService & NSSharingServicePicker

按惯例,Demo 点这里,如果能帮到你,就点个 ⭐️ ⭐️ ⭐️

NSSharingService

NSSharingService 用于 macOS 中的分享功能,支持分享 NSURL、NSString、NSImage、视频(通过文件URL)或任何实现 NSPasteboardWriting 协议的对象。

这里直接就上代码:

@IBAction func sendMail(_ sender: NSButton) {
    // send email
    let service = NSSharingService(named: .composeEmail)
    service?.delegate = self
    service?.recipients = ["[email protected]"]
    service?.subject = "Subject"
    if let service = service, service.canPerform(withItems: ["this is text content"]) {
        service.perform(withItems: ["this is text content"])
    } else {
        print("can't perform item")
    }
}

NSSharingService 通过 name 来创建一个 service,苹果本身已经提供好一些常用的分享项目:

macOS Development - NSSharingService & NSSharingServicePicker_第1张图片
图片.png

这里选择了分享到邮件,可以通过 recipients 和 subject 来设置邮件的发送地址和标题,然后通过 perform 来进行分享。实现的效果如下:

macOS Development - NSSharingService & NSSharingServicePicker_第2张图片
图片.png

NSSharingServicePicker

NSSharingServicePicker 类提供了一个分享服务列表,以便用户可以选择一个服务来分享内容。 这里直接上效果图:

macOS Development - NSSharingService & NSSharingServicePicker_第3张图片
图片.png

实现代码如下:

@IBAction func share(sender: NSButton) {
    let image = NSImage(named: NSImage.Name(rawValue: "code.jpg"))
    let picker = NSSharingServicePicker(items: [image!])
    picker.delegate = self
    picker.show(relativeTo: .zero, of: sender, preferredEdge: .minY)
}

NSSharingServicePicker 实质上就相当于 iOS 开发中的 UIActivityViewController,给用户提供一个分享列表,用户可以选择相应的项目进行分享。

更多内容,请关注我的公众号:

macOS Development - NSSharingService & NSSharingServicePicker_第4张图片
关注公众号

你可能感兴趣的:(macOS Development - NSSharingService & NSSharingServicePicker)