2017-06-23 47 views
0

我試圖模仿可以用SFSafariViewController觀察到的行爲。呈現時,推送過渡動畫就像使用根目錄UINavigationalController一樣使用。在進行邊緣平移向右滑動時,會出現彈出式轉場。如何在不使用導航控制器的情況下推送UIViewController?

let url = URL(string: "http://google.com")! 
let safari = SFSafariViewController(url: url) 
present(safari, animated: true, completion: nil) 

但是,我需要與任何其他UIViewController一樣的過渡。

let storyboard = UIStoryboard(name: "Place", bundle: nil) 
let controller = storyboard.instantiateInitialViewController() 
present(controller!, animated: true, completion: nil) 
+1

您可以始終存在,並且帶有自定義轉換解僱。看看這個[教程](https://www.raywenderlich.com/146692/ios-animation-tutorial-custom-view-controller-presentation-transitions-2),它可能會有所幫助。 – Ayazmon

回答

0

使用CATransition可以能夠同時呈現ViewController

let controller = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() 

    let transition = CATransition() 
    transition.duration = 0.5 
    transition.type = kCATransitionPush 
    transition.subtype = kCATransitionFromRight 
    view.window!.layer.add(transition, forKey: kCATransition) 
    present(controller, animated: false, completion: nil) 
0

@Fuxing改變動畫導演,這是不可能推視圖控制器沒有導航controller.Ther兩個選項來推一個視圖控制器。

  1. 將導航控制器添加到故事板中的viewController中。
  2. 創建導航控制器的一個目的。

    let viewToPush = YourViewController() 
    let nav = UINavigationController(rootViewController: viewToPush)  
    nav.pushViewController(nav, animated: true) 
    
+0

我不明白第二個選項。我目前的視圖控制器沒有導航控制器。 –

+0

只需複製我的答案中提到的代碼,並用您自己的視圖控制器替換YourViewController。 –

相關問題