【问题标题】:Share Extension Modal Presentation Style iOS 13 is not working共享扩展模式演示样式 iOS 13 无法正常工作
【发布时间】:2020-02-10 13:34:37
【问题描述】:

我实现了共享扩展,我想用crossDissolve 为我的视图控制器设置动画,所以我设置了modalPresentationStyle = .overFullScreen 和modalTransitionStyle = crossDissolve,但它似乎不起作用。 VC 仍然从下到上出现,并带有新的 iOS 13 模态样式(不是完全全屏)。 有谁知道如何解决它?它尝试了有和没有故事板。

注意:我说的不是普通的 VC 演示,而是 share extension 的演示,这意味着它是另一个应用程序演示我的 VC。

【问题讨论】:

  • 我重新创建了这个问题,事实上,我得到的是交叉溶解,而不是你描述的行为。你是如何呈现的?您是打电话给present(_:animated:completion:) 还是通过界面构建​​器使用segues?你能告诉我们任何代码吗?
  • 这是我如何让它工作的一个例子:pastebin.com/Uz63Ckij
  • @DavidChopin 是共享文件的应用程序呈现我的extension,所以我不知道它使用的是哪种呈现方法。 (例如:转到Voice memos 并按share 并选择我的应用程序)。我只是在我的 VC 的属性上选择 modalPresentationStyle 和 modalTransitionStyle。您的示例只是一个普通的演示文稿。
  • 啊,我明白了。你能分享一些你如何实现它的代码吗?
  • 请问有什么更新吗?

标签: ios swift xcode share share-extension


【解决方案1】:

一种方法是让系统将视图控制器呈现为容器。

然后以模态方式展示您的内容视图控制器。

// this is the entry point
// either the initial viewcontroller inside the extensions storyboard
// or
// the one you specify in the .plist file
class ContainerVC: UIViewController {

    // afaik presenting in viewDidLoad/viewWillAppear is not a good idea, but this produces the exact result you are looking for.
    // meaning the content slides up when extension is triggered.
    override func viewWillAppear() {
        super.viewWillAppear()

        view.backgroundColor = .clear

        let vc = YourRootVC()
        vc.view.backgroundColor = .clear
        vc.modalPresentationStyle = .overFullScreen
        vc.loadViewIfNeeded()
        present(vc, animated: false, completion: nil)
    }

}

然后使用内容视图控制器显示您的根视图控制器及其视图层次结构。

class YourRootVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let vc = UIViewController() // your actual content
        vc.view.backgroundColor = .blue
        vc.view.frame = CGRect(origin: vc.view.center, size: CGSize(width: 200, height: 200))
        view.addSubview(vc.view)
        addChild(vc)
    }

}

基本上是一个容器和一个包装器,以便控制正在显示的视图。

来源:我遇到了同样的问题。这个解决方案对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2020-10-09
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多