2016-08-04 62 views
0

在我的SpriteKit遊戲中,所有在橫向上,我顯示一個SafariViewController。Swift 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。

我寫一個實現此行爲的示例(不知道在自動面罩,可能是你需要使用自動佈局,但它是由你):

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) 
+0

非常感謝你。明天我會拍攝這張照片並回報。還有另外一個堆棧問題,我看到它是以同樣的方式,而不是viewController,他們將它添加到頂部欄設置爲隱藏的UINav欄。這最初似乎工作,但我注意到,如果你快速連續打開和關閉safari VC,你可以得到一個沒有按鈕/界面的白色屏幕。我永遠無法複製那只是正常添加它。我嘗試與一個VC並且讓你知道。再次感謝 – crashoverride777

+0

它對你有幫助嗎? –

+0

對不起,延遲迴復。我正在度假,直到今天都沒有時間。您的回答非常好,我也不能在沒有UI的空白Safari瀏覽器頁面上覆制問題。再次感謝您的幫助。 – crashoverride777