我正在尝试使用UIActivityViewController来仅显示Facebook,Twitter和Instagram的选项。到目前为止,我已经完成了:
let shareText = "Hello, world!"
let image = UIImage(named: "TheImage")
let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.addToReadingList,
UIActivityType.airDrop,
UIActivityType.assignToContact,
UIActivityType.copyToPasteboard,
UIActivityType.mail,
UIActivityType.message,
UIActivityType.openInIBooks,
UIActivityType.print,
UIActivityType.saveToCameraRoll
]
present(activityViewController, animated: true, completion: {})
但是UIActivityViewController仍然给了我不想要的选择。
我也想过用NSExtensionItem来接近并接近,但我不确定。
谢谢
答案 0 :(得分:2)
Facebook和Twitter有可用选项,您只需添加excludedActivityTypes即可。你错过了它。
Instagram选项在活动类型中仍然不可用
let image = UIImage(named: "TheImage")
let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
activityViewController.excludedActivityTypes = [.addToReadingList,
.airDrop,
.assignToContact,
.copyToPasteboard,
.mail,
.message,
.openInIBooks,
.print,
.saveToCameraRoll,
.postToWeibo,
.copyToPasteboard,
.saveToCameraRoll,
.postToFlickr,
.postToVimeo,
.postToTencentWeibo,
.markupAsPDF
]
present(activityViewController, animated: true, completion: {})
我希望这会对你有所帮助。
以下列出了可用的活动类型。
extension UIActivityType {
@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
}
答案 1 :(得分:1)
Apple 支持部分默认UIActivityTypes
,其中包含您Facebook
和Twitter
。
您可以在此处获取UIActivityTypes
的完整列表:https://developer.apple.com/documentation/uikit/uiactivitytype
默认情况下,所有UIActivityTypes
都会显示在UIActivityController
中。您不希望在UIActivityController
中显示的活动会添加到exclude list
中,即
activityViewController.excludedActivityTypes = [.postToFlickr, .postToVimeo]
此外,只要在设备上安装了包含 App
的Share App Extension
,它就会添加到UIActivityController
。
示例:
<强> WhatsApp的即可。每当您在设备上安装WhatsApp时,它都会在Share App Extension
中显示为UIActivityController
。
您无法删除它们,但只能将其隐藏在UIActivityController's
更多选项中。
如果您仍然遇到任何问题,请告诉我。
答案 2 :(得分:1)
截至目前(2019年3月),仅当您在activityItems上设置图像且仅设置该图像时,Instagram共享选项才会出现。如果您在其中添加TEXT或URL对象,Instagram选项也不会显示。
Twitter在其他方面会接受TEXT和IMAGE,但是如果您也传递URL,它也不会显示为选项