我开始搜索是想知道如何与 iOS 中的其他应用程序共享。我发现有两个重要的方法是
UIActivityViewController
UIDocumentInteractionController
这些和其他方法在 this SO answer 中进行了比较.
当我学习一个新概念时,我常常喜欢看一个基本的例子来帮助我入门。一旦我完成了一些基本设置,我就可以稍后根据自己的喜好对其进行修改。
有很多与 UIActivityViewController
相关的 SO 问题,但我找不到任何只是要求一个简单示例的问题。由于我刚刚学会了如何执行此操作,因此我将在下面提供自己的答案。随意添加一个更好的版本(或 Objective-C 版本)。
最佳答案
UIActivityViewController 示例项目
使用两个按钮设置 Storyboard并将它们连接到 View Controller (参见下面的代码)。
将图像添加到您的 Assets.xcassets。我叫我的“狮子”。
代码
import UIKit
class ViewController: UIViewController {
// share text
@IBAction func shareTextButton(_ sender: UIButton) {
// text to share
let text = "This is some text that I want to share."
// set up activity view controller
let textToShare = [ text ]
let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop, UIActivity.ActivityType.postToFacebook ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
}
// share image
@IBAction func shareImageButton(_ sender: UIButton) {
// image to share
let image = UIImage(named: "Image")
// set up activity view controller
let imageToShare = [ image! ]
let activityViewController = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop, UIActivity.ActivityType.postToFacebook ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
}
}
结果
点击“分享一些文字”会在左侧显示结果,点击“分享图片”会在右侧显示结果。
注意事项
- 我用 iOS 11 和 Swift 4 重新测试了它。我必须在模拟器中运行它几次才能正常工作,因为它超时了。这可能是因为我的电脑速度很慢。
- 如果您希望隐藏其中一些选项,您可以使用
excludedActivityTypes
来实现,如上面的代码所示。 - 不包含
popoverPresentationController?.sourceView
行会导致您的应用程序在 iPad 上运行时崩溃。 - 这不允许您与其他应用共享文本或图像。为此,您可能需要
UIDocumentInteractionController
。
另见
关于ios - 在 Swift 中使用 UIActivityViewController 共享文本或图像的基本示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931946/