How do I do a Fade/No transition between view controllers

前端 未结 10 743
时光取名叫无心
时光取名叫无心 2020-12-07 08:48

Is it possible to do a fade in and fade out transition between View Controllers in Storyboard. Or without transition.

If it\'s possible, what\'s the code for it?

相关标签:
10条回答
  • 2020-12-07 09:16

    My Swift Version with optional checking offcourse!

        let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
        if let stView = storyboard.instantiateViewControllerWithIdentifier("STVC") as? STVC {
            stView.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
            self.navigationController?.presentViewController(stView, animated: true, completion: nil)
        }
    

    Just make sure to set the Storyboard ID of the "View controller" in IB

    0 讨论(0)
  • 2020-12-07 09:21

    Try this one.

        let transition: CATransition = CATransition()
        transition.duration = 0.4
        transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        transition.type = kCATransitionFade
        self.navigationController!.view.layer.addAnimation(transition, forKey: nil)
    
        let vc = self.storyboard?.instantiateViewControllerWithIdentifier("vcID") as! My_ViewController
        self.navigationController?.pushViewController(vc, animated: false)
    
    0 讨论(0)
  • 2020-12-07 09:22

    Without needing to create a custom segue, I put together this code to present the view...

    UIViewController *nextView = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"YOUR_VIEW_CONTROLLER_STORYBOARD_NAME"];
    
    nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    
    [self.navigationController presentViewController:nextView animated:YES completion:nil];
    // (For a cross dissolve, set animated:YES.  For no transition, set animated:NO.)
    

    Hope this helps anyone who comes across this question!

    0 讨论(0)
  • 2020-12-07 09:23

    Push/Pop UIVIewController FadeIn/FadeOut in Swift

    class FadeInPushSegue: UIStoryboardSegue {
    
        var animated: Bool = true
    
        override func perform() {
    
            if var sourceViewController = self.sourceViewController as? UIViewController, var destinationViewController = self.destinationViewController as? UIViewController {
    
                var transition: CATransition = CATransition()
    
                transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
                sourceViewController.view.window?.layer.addAnimation(transition, forKey: "kCATransition")
                sourceViewController.navigationController?.pushViewController(destinationViewController, animated: false)
    
    
            }
        }
    
    }
    
    class FadeOutPopSegue: UIStoryboardSegue {
    
        override func perform() {
    
            if var sourceViewController = self.sourceViewController as? UIViewController, var destinationViewController = self.destinationViewController as? UIViewController {
    
                var transition: CATransition = CATransition()
    
                transition.duration = 0.4
                transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
                transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
    
                sourceViewController.view.window?.layer.addAnimation(transition, forKey: "kCATransition")
                sourceViewController.navigationController?.popViewControllerAnimated(false)
            }
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题