基本分享
//設(shè)定分享內(nèi)容
let textShare = "text"
let imageShare = UIImage(named: "aaa")
let urlShare = URL(string: "http://www.baidu.com")
let activityItems = [textShare,imageShare as Any,urlShare as Any]
//彈出分享框
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities:nil)
present(activityViewController, animated: true, completion: nil)
//分享結(jié)束后的回調(diào)
activityViewController.completionWithItemsHandler = {(_ activityType: UIActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ activityError: Error?) -> Void in
print(completed ? "成功" : "失敗")
}
/**
設(shè)置排除的服務(wù)
@available(iOS 6.0, *)
public static let postToFacebook: UIActivityType
@available(iOS 6.0, *)
public static let postToTwitter: UIActivityType
@available(iOS 6.0, *)
public static let postToWeibo: UIActivityType // SinaWeibo
@available(iOS 6.0, *)
public static let message: UIActivityType
@available(iOS 6.0, *)
public static let mail: UIActivityType
@available(iOS 6.0, *)
public static let print: UIActivityType
@available(iOS 6.0, *)
public static let copyToPasteboard: UIActivityType
@available(iOS 6.0, *)
public static let assignToContact: UIActivityType
@available(iOS 6.0, *)
public static let saveToCameraRoll: UIActivityType
@available(iOS 7.0, *)
public static let addToReadingList: UIActivityType
@available(iOS 7.0, *)
public static let postToFlickr: UIActivityType
@available(iOS 7.0, *)
public static let postToVimeo: UIActivityType
@available(iOS 7.0, *)
public static let postToTencentWeibo: UIActivityType
@available(iOS 7.0, *)
public static let airDrop: UIActivityType
@available(iOS 9.0, *)
public static let openInIBooks: UIActivityType
@available(iOS 11.0, *)
public static let markupAsPDF: UIActivityType
**/
activityViewController.excludedActivityTypes = [.postToWeibo,.postToTwitter]
UIActivityViewController分享到不同服務(wù)都有一定的局限性汁汗,比如說(shuō)facebook無(wú)法分享文本且圖片和url不能同時(shí)分享
自定義分享
新建一個(gè)類繼承UIActivity并重寫(xiě)以下方法
import UIKit
class CustomActicity: UIActivity {
//分享的標(biāo)題
override var activityTitle: String?{
return "標(biāo)題"
}
//分享的LOGO
override var activityImage: UIImage?{
return UIImage.init(named: "aaa")
}
//提供的服務(wù)類型的標(biāo)識(shí)符
override var activityType: UIActivityType?{
return UIActivityType.init(CustomActicity.description())
}
//分享類型 .action .share
override class var activityCategory: UIActivityCategory {
return .share
}
///操作
override func prepare(withActivityItems activityItems: [Any]) {
print(activityItems)
}
///是否允許進(jìn)行分享
override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
return true
}
}
使用:
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: [CustomActicity()])