UIViewController 切换及简单动画

来源:互联网 发布:鬼吹灯哪部最好看 知乎 编辑:程序博客网 时间:2024/05/16 16:05

UIViewController应该是我们最常用的。

那么最简单的切换方式是什么了?

 func presentViewController(viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)?)


同时可以设置一些简单动画,淡入淡出,翻页等等

我们首先创建一个项目,他会有一个自带的视图控制器ViewController

然后我们再创建视图控制器用来切换。

[objc] view plaincopy
  1. import UIKit  
  2.   
  3. class MyRootViewController: UIViewController {  
  4.   
  5.     override func viewDidLoad() {  
  6.         super.viewDidLoad()  
  7.   
  8.         // Do any additional setup after loading the view.  
  9.         self.view.backgroundColor=UIColor.lightGrayColor()  
  10.           
  11.         let btn=UIButton(frame: CGRectMake(2012032036))  
  12.         btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  
  13.         btn.setTitle("返回", forState: UIControlState.Normal)  
  14.         btn.addTarget(self, action"back", forControlEvents: UIControlEvents.TouchDown)  
  15.         self.view.addSubview(btn)  
  16.           
  17.     }  
  18.   
  19.     override func didReceiveMemoryWarning() {  
  20.         super.didReceiveMemoryWarning()  
  21.         // Dispose of any resources that can be recreated.  
  22.     }  
  23.       
  24.   
  25.     func back(){  
  26.         self.dismissViewControllerAnimated(true, completion: nil)  
  27.     }  
  28.       
  29.   
  30. }  

我们可以看到这个类很简单就是一个UIViewController的子类。

给他创建button用来返回。


接下来,我们给自带的ViewController添加四个Button分别测试四种切换方式

[objc] view plaincopy
  1. override func viewDidLoad() {  
  2.     super.viewDidLoad()  
  3.       
  4.     let btn=UIButton(frame: CGRectMake(2010032036))  
  5.     btn.setTitle("垂直切换", forState: UIControlState.Normal)  
  6.     btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  
  7.     btn.tag=90  
  8.     btn.addTarget(self, action"testAct:", forControlEvents: UIControlEvents.TouchDown)  
  9.     self.view.addSubview(btn)  
  10.       
  11.       
  12.     let btn1=UIButton(frame: CGRectMake(2015032036))  
  13.     btn1.setTitle("旋转", forState: UIControlState.Normal)  
  14.     btn1.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  
  15.     btn1.tag=91  
  16.     btn1.addTarget(self, action"testAct:", forControlEvents: UIControlEvents.TouchDown)  
  17.     self.view.addSubview(btn1)  
  18.       
  19.     let btn2=UIButton(frame: CGRectMake(2020032036))  
  20.     btn2.setTitle("淡入淡出", forState: UIControlState.Normal)  
  21.     btn2.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  
  22.     btn2.tag=92  
  23.     btn2.addTarget(self, action"testAct:", forControlEvents: UIControlEvents.TouchDown)  
  24.     self.view.addSubview(btn2)  
  25.       
  26.     let btn3=UIButton(frame: CGRectMake(2025032036))  
  27.     btn3.setTitle("翻页", forState: UIControlState.Normal)  
  28.     btn3.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)  
  29.     btn3.tag=93  
  30.     btn3.addTarget(self, action"testAct:", forControlEvents: UIControlEvents.TouchDown)  
  31.     self.view.addSubview(btn3)  
  32.       
  33.       
  34. }  


button点击后对应的方法如下

[objc] view plaincopy
  1. func testAct(b:UIButton){  
  2.     let rootVC=MyRootViewController()  
  3.       
  4.       
  5.       
  6.     if(b.tag==90){  
  7.         rootVC.modalTransitionStyle = .CoverVertical  
  8.     }else if(b.tag==91){  
  9.         rootVC.modalTransitionStyle = .FlipHorizontal  
  10.     }else if(b.tag==92){  
  11.         rootVC.modalTransitionStyle = .CrossDissolve  
  12.     }else if(b.tag==93){  
  13.         rootVC.modalTransitionStyle = .PartialCurl  
  14.     }  
  15.       
  16.     self.presentViewController(rootVC, animatedtrue, completion: nil)  
  17.       
  18.       
  19. }  

其中modalTr5ansitionStyle 是一个枚举,有四个值,分别代表四种奇幻方式
0 0