让 UIActivityViewController(共享)以在 iPhone 上显示的方式在 iPad 上显示?

Get UIActivityViewController (share) to show on iPad in the way it shows on iPhone?

我有一个分享按钮。点击分享按钮时,视图控制器运行如下代码:

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

@IBOutlet weak var popOverView: UIView!
@IBOutlet weak var shareButton: UIButton!
@IBAction func share()
{
    let text = "Sharing."
    if let url = URL(string: "https://www.apple.com")
    {
        let items = [text,url] as [Any]
        let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
        if let popoverViewController = activityViewController.popoverPresentationController
        {
            popoverViewController.sourceView = popOverView
            // popoverViewController.sourceRect = popOverView.frame
        }
        present(activityViewController, animated: true, completion: nil)
        print(activityViewController.popoverPresentationController?.sourceView)
    }
}

}

这有效,但会产生这个:

当我想要这样的东西时,因为要共享的内容不会在这个视图控制器上:

如何获得我想要的屏幕?

我认为你需要这样做:

sharingViewController.modalPresentationStyle = .popover

在您设置 sharingViewController.popoverPresentationController?.sourceView 属性 之前。在您执行此操作之前,sharingViewController.popoverPresentationController 为零。

不幸的是 不可能 iPad。

抱歉带来坏消息!


如果你真的、真的想要那种外观,你必须制作一个完全自定义的视图控制器(即,不连接到 UIActivityViewController),当然这是不切实际的工作量。