美文网首页
酱油08-动画

酱油08-动画

作者: 没有北方的南方 | 来源:发表于2016-08-24 21:04 被阅读21次

    三种实现动画效果的方法

    1. CALayer(CATransaction)

    import UIKit
    
    class ViewController: UIViewController {
    
        var redview : redView!
        var layer : CALayer!
        var shapeLayer: CAShapeLayer!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            layer = CALayer()
            layer.frame = CGRect(x: 200, y: 100, width: 100, height: 100)
            layer.backgroundColor = UIColor.brownColor().CGColor
            self.view.layer.addSublayer(layer)
            //CALayer中自带绘图功能
    //        shapeLayer = CAShapeLayer()
    //        shapeLayer.frame = self.view.bounds
    //        shapeLayer.strokeColor = UIColor.blackColor().CGColor
    //        shapeLayer.fillColor = UIColor.clearColor().CGColor
    //        self.view.layer.addSublayer(shapeLayer)
    //        
        }
    

    1.1 点击按钮方法

        @IBAction func Animation(sender: UIButton) {
            //开始设置CALayer动画的属性
            CATransaction.begin()
            //设置动画的运行时间
            CATransaction.setAnimationDuration(5)
            //设置动画出现的效果(kCAMediaTimingFunctionEaseIn)
            CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn))
            //设置动画所需要的效果
            layer.frame = CGRect(x: 300, y: 200, width: 50, height: 50)
            layer.backgroundColor = UIColor.redColor().CGColor
            //开始执行动画
            CATransaction.commit()
        }
    

    2. UIView中自带的方法(animateWithDuration)

    import UIKit
    
    class ViewController: UIViewController {
    
        var redview : redView!
        var layer : CALayer!
        var shapeLayer: CAShapeLayer!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            redview = redView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
            redview.backgroundColor = UIColor.redColor()
            self.view.addSubview(redview)
         
        }
    

    2.1 点击按钮方法

        @IBAction func Animation(sender: UIButton) {
            //animateWithDuration方法
            
            UIView.animateWithDuration(5) {
                self.redview.backgroundColor = UIColor.brownColor()
                self.redview.frame = CGRect(x: 200, y: 200, width: 100, height: 100)
            }
            //两种不同的方法
            UIView.animateWithDuration(5, delay: 0, options: .AllowUserInteraction, animations: {
                self.redview.backgroundColor = UIColor.yellowColor()
                }) { (true) in
                    print("ok")
            }
            
            //设置UIView的动画属性,与animateWithDuration不同,与CALayer相似
            UIView.beginAnimations("first", context: nil)
    
            UIView.setAnimationDuration(1)
            //设置重复次数
            UIView.setAnimationRepeatCount(100)
            //设置回到起始位置
            UIView.setAnimationRepeatAutoreverses(true)
            
    //        UIView.setAnimationDelay(2)
            redview.frame = CGRect(x: 200, y: 200, width: 50, height: 50)
            redview.backgroundColor = UIColor.brownColor()
            
            UIView.commitAnimations()
        }
    

    3. CALayer(CABasicAnimation/CAKeyframeAnimation/CAAnimationGroup)

    import UIKit
    
    class ViewController: UIViewController {
    
        var redview : redView!
        var layer : CALayer!
        var shapeLayer: CAShapeLayer!
        
        override func viewDidLoad() {
            super.viewDidLoad()
         layer = CALayer()
            layer.frame = CGRect(x: 200, y: 100, width: 100, height: 100)
            layer.backgroundColor = UIColor.brownColor().CGColor
            self.view.layer.addSublayer(layer)
        }
    

    3.1 点击按钮方法

        @IBAction func Animation(sender: UIButton) {
            //设置动画移动路径为中心移动
            let ani01 = CABasicAnimation(keyPath: "position")
            //设置绘图大小及路径
            let path = CGPathCreateMutable()
            
            CGPathAddRect(path, nil, CGRect(x: 150, y: 200, width: 200, height: 100))
            shapeLayer.path = path
            //设置动画起点/偏移/终点(有两个即可,右下为正)
            ani01.fromValue = NSValue(CGPoint: CGPoint(x: 100, y: 100))
            ani01.byValue = NSValue(CGPoint: CGPoint(x: 200, y: 100))
            ani01.toValue = NSValue(CGPoint: CGPoint(x: 300, y: 300))
            ani01.duration = 5
            layer.addAnimation(ani01, forKey: "ani01")
            //设置动画移动时颜色变化
            let ani02 = CABasicAnimation(keyPath: "backgroundColor")
            ani02.fromValue = UIColor.blueColor().CGColor
            ani02.toValue = UIColor.redColor().CGColor
            //设置动画在路径上移动时颜色变化
            let ani03 = CAKeyframeAnimation(keyPath: "position")
            ani03.path = path
        
            //设置变化的颜色
            ani03.values = [
                UIColor.redColor().CGColor,
                UIColor.blackColor().CGColor,
                UIColor.greenColor().CGColor
            ]
            //设置变化时间
            ani03.keyTimes = [0,0.5,0.7]
            ani02.duration = 5
            layer.addAnimation(ani02, forKey: "ani02")
            //设置动画组(实现多种动画)
            let anis = CAAnimationGroup()
            anis.animations = [ani01, ani02, ani03]
            anis.duration = 5
            layer.addAnimation(anis, forKey: "anis")
            
        }
    

    相关文章

      网友评论

          本文标题:酱油08-动画

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