让 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),当然这是不切实际的工作量。
我有一个分享按钮。点击分享按钮时,视图控制器运行如下代码:
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),当然这是不切实际的工作量。