【问题标题】:Activity View Controller not showing the entire popup活动视图控制器未显示整个弹出窗口
【发布时间】:2021-05-18 17:35:01
【问题描述】:

我正在尝试制作一个绘图应用程序,我想添加活动视图控制器。它适用于 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会改变popup的位置,height和width会改变大小,但在sourceRect中似乎是相反的。

【问题讨论】:

    标签: ios swift ipad


    【解决方案1】:

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

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

    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.down
    

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

    【讨论】:

    • 完美运行!谢谢你的一切!
    • 我也学到了一些东西:正如您从我的 cmets 中关于您删除的答案中看到的那样,我不知道给出错误的箭头方向会导致视图控制器界面被截断!所以这个 Q 和 A 真的可能对其他人有用。
    猜你喜欢
    • 2021-06-24
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2022-09-28
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多