美文网首页
视图控制器易忘方法大全

视图控制器易忘方法大全

作者: 乡野村夫汉 | 来源:发表于2016-09-05 22:14 被阅读0次

    视图控制器的创建

    通过storyboard去创建视图控制器

    instantiate: 实例化;示例
    Initial: 最初的

    //拿到storyboard文件对象
    //参数1:storyboard 文件名
    let storyboard = UIStoryboard.init(name: "XXX", bundle: nil)
    //拿到storyboard文件中箭头指向的视图控制器
    let root2 = storyboard.instantiateInitialViewController()
    

    视图控制器的生命周期

    生命周期中的几种时态会自动调用的方法:

    //注意:重写生命周期相关的方法的时候必须通过supper去调用父类的相关方法
    //创建视图控制器的view属性的时候会自动调用
    //创建一个视图控制器只会调用一次
    loadView
    
    //view已经加载完成的时候会调用
    //一般在这个方法中去搭建当前视图控制器对应的界面
    viewDidLoad
    //视图view将要出现的时候调用
    //可能调用多次
    viewWillAppear
    //已经出现
    viewDidAppear
    //将要消失
    viewWillDisappear
    //已经消失
    viewDidDisappear
    //接收到内存警告
    didReceiveMemoryWarning
    
    

    转场动画

    duration: 持续,持续的时间,期间
    Direction: 方向;指导;趋势;用法说明

    //a.创建转场动画
    let animation = CATransition.init()
    
    //b.设置动画时间
    animation.duration = 0.3
    //c.设置动画类型
    animation.type = "cube"
    //d.动画方向
    animation.subtype = kCATransitionFromTop
    //e.添加动画
    //可以通过任何已经显示在界面上的视图去拿到当前应用程序的window()主窗口
    self.view.window?.layer.addAnimation(animation, forKey: nil)
    
    

    为了方便可以将系统动画封装起来
    创建一个类扩展UIView :

    import UIKit
    //动画类型的枚举
    enum TransitionType: String {
        ///交叉淡化过渡
        case Fade = "fade"
        ///新视图移到旧视图上面
        case MoveIn = "moveIn"
        ///新视图把旧视图推上去
        case Push = "push"
        ///将视图移开,显示下面的新视图
        case Reveal = "reveal"
        ///向上翻页
        case PageCurl = "pageCurl"
        ///向下翻页
        case PageUnCurl = "pageUnCurl"
        ///滴水效果
        case RippleEffect = "rippleEffect"
        ///收缩效果(如一块布被抽走)
        case SuckEffect = "suckEffect"
        ///立方体效果
        case Cube = "cube"
        ///上下翻转效果
        case OglFlip = "oglFlip"
    }
    //转场动画的方向枚举
    enum TrasitionDirection: String {
        case FromRight = "fromright"
        case FromLeft = "fromleft"
        case FromTop = "fromtop"
        case FromBotton = "frombotton"
    }
    //扩展UIView
    extension UIView{
        
        ///添加转场动画
        func addtransitionAnimation(duration: Double, type: TransitionType, direction: TrasitionDirection) {
            
            //创建动画对象
            let animation = CATransition.init()
            
            //设置动画时间
            animation.duration = duration
            //设置动画方向
            animation.subtype = direction.rawValue
            //设置动画类型
            animation.type = type.rawValue
            //添加动画
            self.window?.layer.addAnimation(animation, forKey: nil)
        }
    }
    
    

    将动画封装后,添加动画的方式可以由一句话完成

    self.view.addtransitionAnimation(2, type: TransitionType.Cube, direction: TrasitionDirection.FromBotton)
    
    

    正向传值

    将上一个界面的值传到下一个界面

    方法:
    1.在下一个界面中声明一个属性保存要传的值的类型。例如:将上一个界面中的文本框中的文字传到下一个界面,只需要在下一个界面中声明一个String类型的属性
    2.在上一个界面将要弹出下一个界面的时候,给第一步声明的属性赋值
    3.在下一个界面中去使用传过来的值(在生命周期的viewdidload及其以后的时间段内都可以使用)

    核心代码如下

    //创建下一个界面的对象
    let next = NextViewController()
    //将当前界面的文本框的内容赋值给下一个界面用来接收传值的属性
    next.value = self.textField.text
    //弹出下一个界面
    self.presentViewController(next, animated: true, completion: nil)

    相关文章

      网友评论

          本文标题:视图控制器易忘方法大全

          本文链接:https://www.haomeiwen.com/subject/gpekettx.html