0

在我的 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
}

打开/关闭动画来自右侧。

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

有没有办法我也可以做到这一点?

4

1 回答 1

1

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)
于 2016-08-08T22:49:06.013 回答