Swift SafariViewController 动画

Swift SafariViewController animation

在我的 SpriteKit 游戏中,所有横向的游戏中,我显示的是 SafariViewController。

func showSafariViewController(forURL url: String) {
    guard let validURL = NSURL(string: url) else { return }

    let safariViewController = SFSafariViewController(URL: validURL)
    safariViewController.delegate = self
    // present safariViewController
}

open/closing 动画来自右侧。

当使用 Facebook SDK 登录 Facebook 时,看起来他们也在使用 SafariViewController 并且它从底部开始动画 in/out。

有什么方法可以实现吗?

FacebookSDK 的行为有点棘手:他们将 SafariVC 添加到另一个视图控制器 (containerVC),然后呈现 containerVC,而不是 SafariVC。

我写了一个实现此行为的示例(不确定自动调整掩码大小,可能您需要使用自动布局,但这取决于您):

  let containerVC = UIViewController()
  let url = URL(string: "https://yandex.ru")!
  let safariVC = SFSafariViewController(url: url)
  containerVC.addChildViewController(safariVC)
  safariVC.view.autoresizingMask = [ .flexibleWidth, .flexibleHeight ]
  safariVC.view.frame = containerVC.view.frame
  containerVC.view.addSubview(safariVC.view)
  safariVC.didMove(toParentViewController: containerVC)
  self.present(containerVC, animated: true, completion: nil)