Activity 视图控制器未显示整个弹出窗口

Activity View Controller not showing the entire popup

我正在尝试制作一个绘图应用程序,我想添加 activity 视图控制器。它适用于 iPhone,但不会在 iPad 上显示整个视图控制器。我根据阅读的内容尝试了许多不同的方法,但结果是一样的。感谢您的帮助。

代码: @IBAction func actionsTapped(_ sender: Any) {

    // Setting description
    let message = "Actions for your drawing"
    
    // Get the image to save
    let image = getImage()

    let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [message, image], applicationActivities: nil)
    
    // Ipad popup
    activityViewController.popoverPresentationController?.sourceView = (self.view)
    
    // Remove Ipad arrow
    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.down
    activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)
    
    // Pre-configuring activity items
    activityViewController.activityItemsConfiguration = [
        UIActivity.ActivityType.message,
        UIActivity.ActivityType.print,
        UIActivity.ActivityType.saveToCameraRoll,
        UIActivity.ActivityType.airDrop
    ] as? UIActivityItemsConfigurationReading
    
    // Exclude
    activityViewController.excludedActivityTypes = [
        UIActivity.ActivityType.postToWeibo,
        UIActivity.ActivityType.addToReadingList,
        UIActivity.ActivityType.postToFlickr,
        UIActivity.ActivityType.postToVimeo,
        UIActivity.ActivityType.postToTencentWeibo,
        UIActivity.ActivityType.postToFacebook
    ]
    
    activityViewController.isModalInPresentation = true
    self.present(activityViewController, animated: true, completion: nil)

}

正如有人指出的那样,我尝试在 sourceRect 中更改高度和宽度不起作用。请参阅下面我更改的地方

activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)

activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 500, height: 500)

我最初的想法是 x 和 y 会改变弹出窗口的位置,高度和宽度会改变大小,但在 sourceRect 中似乎是相反的。

听起来你误解了 sourceRect 是什么。它本身与 activity 视图控制器的大小无关。它确定箭头指向的位置。

activity 视图控制器总是有自己的全尺寸。我怀疑这里出了什么问题是因为这一行:

activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.down

这会强制整个 activity 视图控制器出现在 上方 源矩形(即更靠近屏幕顶部)——但是没有空间。如果你只是剪掉那条线,activity 视图控制器可能会出现在 房间的地方。