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)