2017-06-23 4 views
0

Ich versuche, das Verhalten nachzuahmen, das mit SFSafariViewController beobachtet werden kann. Wenn sie angezeigt wird, wird die Push-Übergangsanimation genauso wie bei einem Stamm UINavigationalController verwendet. Wenn Sie einen Edge-Pan-Swipe nach rechts machen, folgt der Pop-Übergang.Wie schiebe ich einen UIViewController, ohne einen Navigationscontroller zu verwenden?

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

Ich brauche aber den gleichen Übergang mit jedem anderen UIViewController zu arbeiten.

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

Sie können immer vorhanden und mit benutzerdefinierten Übergänge entlassen. Schauen Sie sich dieses [Tutorial] (https://www.raywenderlich.com/146692/ios-animation-tutorial-custom-view-controller-presentation-transitions-2) an, es könnte helfen. – Ayazmon

Antwort

0

CATransition verwenden Sie können können die Animation Richtung zu ändern, während die ViewController präsentiert

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, es nicht möglich ist, einen View-Controller ohne Navigation drücken controller.Ther zwei Option zu schieben ein View-Controller.

  1. Fügen Sie Ihrem ViewController im Storyboard einen Navigationscontroller hinzu.
  2. Erstellen Sie ein Objekt des Navigationscontrollers.

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

Ich verstehe die zweite Option nicht. Mein aktueller View-Controller hat keinen Navigationscontroller. –

+0

Kopieren Sie einfach den in meiner Antwort erwähnten Code und ersetzen Sie YourViewController durch Ihren eigenen View-Controller. –

Verwandte Themen