首页 > 解决方案 > 活动视图控制器未显示整个弹出窗口

问题描述

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

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 宽

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

标签: iosswiftipad

解决方案


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

活动视图控制器总是有自己的完整尺寸。我怀疑这里出了什么问题是由于这条线:

activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.down

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


推荐阅读