实现视图的切换(动画)

视图的切换从第一个视图 imageview1切换到第二个视图 imageview2

拖两张图片进来,随后拖两个imageview 指定背景图片为img1 和 img2 

import UIKit

class ViewController: UIViewController {
    //实现视图的切换 要用到一个变量
    var rectoVisible = true
    @IBOutlet var img1: UIImageView!
    @IBOutlet var img2: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
//重写开始触摸的时候
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        func completeHandler(v:Bool){
            print("Anim complete")
            rectoVisible = !rectoVisible
        
        }
        if rectoVisible {
            //实现视图的切换 从左往右切换
            UIView.transitionFromView(img1, toView: img2, duration: 1.0, options: UIViewAnimationOptions.TransitionFlipFromLeft, completion: completeHandler)
        }else{
            UIView.transitionFromView(img1, toView: img2, duration: 1.0, options: UIViewAnimationOptions.TransitionFlipFromRight, completion:completeHandler)
        }
    }
    }
实现动画的效果 分为三步 开始动画 配置动画 提交动画

import UIKit

class ViewController: UIViewController {
       @IBOutlet var img1: UIImageView!
    @IBOutlet var img2: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    self.view.addSubview(img1)
          }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
//重写开始触摸的时候
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        //动画的执行 分为3个步骤
       //1 开始动画 参数都可以不要
       UIView.beginAnimations(nil , context: nil)
        //2 适配(匹配)动画 时间 cache为缓存
        UIView.setAnimationTransition(UIViewAnimationTransition.FlipFromLeft, forView: img1, cache: true)
        UIView.setAnimationDuration(2)
        UIView.commitAnimations()
}
}

实现自定义的动画

import UIKit

class ViewController: UIViewController {
       @IBOutlet var img1: UIImageView!
    @IBOutlet var img2: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    self.view.addSubview(img1)
          }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
//重写开始触摸的时候
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        //实现自定义的方法
        func anmi() {
            img1.alpha = 0
            img1.center = CGPoint(x: 100,y: 200)
        }
        //动画执行好后的动作 这个都有个参数 v 为Bool类型
        func complete(v:Bool) {
            print("1")
        }
        UIView.transitionWithView(img1, duration: 2, options: UIViewAnimationOptions.TransitionFlipFromRight, animations: anmi(), completion: complete )
    }
}

使用CATransition来实现动画 主要分为6个步骤 在代码中演示

import UIKit


class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
          }
    
    @IBAction func change(sender: UIButton) {
        //1创建CATransition对象
        var transition = CATransition()
        //2设置动画的时间
        transition.duration = 1.0
        //3设置动画的类型
        transition.type = kCATransitionPush
        //4设置动画的方向
        transition.subtype = kCATransitionFromLeft
        //5执行动画的动作 默认为1和0
        self.view.exchangeSubviewAtIndex(1, withSubviewAtIndex: 0)
        //6添加到core animation的层中
        self.view.layer.addAnimation(transition, forKey: nil)
    }
    
       override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

transform属性来实现动画

平移的动画

import UIKit

class ViewController: UIViewController {

    @IBOutlet var imageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func change(sender: UIButton) {
        //每次都是从当前位置平移 tx表示x轴方向 ty表示y轴方向 这是代表平移
    self.imageView.transform = CGAffineTransformMakeTranslation(1.2, 1.2)
    self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, -1.2, -1.2)
   
    }
    
}

旋转的动画 也有两种实现方式,都是多了一个参数 表示当前的状态

 @IBAction func change(sender: UIButton) {
        //每次都是从当前位置平移 代表弧度 注意一定要是弧度转化成cgfloat
    self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, CGFloat(-M_PI/2))
    self.imageView.transform = CGAffineTransformMakeRotation( CGFloat(-M_PI/2))

缩放的代码

 @IBAction func change(sender: UIButton) {
        //每次都是从当前位置平移 缩放 一个是x轴的缩放 一个是y轴的缩放
    self.imageView.transform = CGAffineTransformMakeScale(2.0, 2.0)
    self.imageView.transform = CGAffineTransformScale(self.imageView.transform, 2.0, 2.0)
   
    }

反转的代码表示两个状态之间的跳转

 @IBAction func change(sender: UIButton) {
        //每次都是从当前位置平移 缩放 一个是x轴的缩放 一个是y轴的缩放
    self.imageView.transform = CGAffineTransformConcat(self.imageView.transform, self.imageView.transform)
    self.imageView.transform = CGAffineTransformInvert(self.imageView.transform)
   
    }


cabasicanimation动画 有fromvalue 和 tovalue  一定要加上动画实现的三个步骤 否则动画看起来就是一瞬间的效果了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值