2017-06-23 4 views
0

私はSFSafariViewControllerで観察できる動作を真似しようとしています。提示されると、プッシュトランジションアニメーションは、ルートUINavigationalControllerのように使用されます。エッジパンを右にスワイプすると、ポップトランジションが続きます。ナビゲーションコントローラを使用せずにUIViewControllerをプッシュするにはどうすればいいですか?

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

しかし、他のUIViewControllerで動作するには同じ遷移が必要です。 CATransitionを使用して

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

することができます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を提示しながら、それをプッシュする2つのオプションですcontroller.Therナビゲーションせずにビューコントローラをプッシュすることはできませんアニメーションの方向を変えることができますビューコントローラ。

  1. ストーリーボード内のviewControllerにナビゲーションコントローラを追加します。
  2. ナビゲーションコントローラのオブジェクトを作成します。あなたが常に存在してカスタムトランジションを消すことができます

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

私は第2のオプションを理解していません。現在のビューコントローラにはナビゲーションコントローラがありません。 –

+0

私の答えに記載されているコードをコピーし、独自のView ControllerでYourViewControllerを置き換えてください。 –

関連する問題