Swift SafariViewController анимация

В моих играх 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 и анимирует вход / выход снизу.

Есть ли способ, которым я могу достичь этого?

1 ответ

Решение

Поведение FacebookSDK немного сложнее: они добавили SafariVC в другой контроллер представления (containerVC) и затем представили containerVC, а не SafariVC.

Я пишу пример, который реализует это поведение (не уверен насчет авторазмера маски, может быть, вам нужно использовать autolayout, но это зависит от вас):

  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)
Другие вопросы по тегам