iOS Developer - CALayerCore Animation@IT·互联网

从零到一学习CALayer(三.CALayer的隐式动画)

2016-08-21  本文已影响205人  mkb2
Jietu20170715-102132-HD.gif Jietu20170715-101813-HD.gif Jietu20170715-101343-HD.gif

1.每个UIView上都有一个自带的layer,我们称他们为root layer(根层)

2.所有的非根层都存在隐式动画,也就是我们手动 创建的layer都存在隐式动画


什么是隐式动画?

1.对非根层layer的属性进行修改,默认自动的出现一些效果动画
2.这些效果称为 AnimatableProperties(可动画属性)


列举几个可动画属性

1.bounds ,用于设置CALayer的宽高,会有缩放效果
2.backgroundColor,用于设置CALayer的背景颜色,会有渐变的效果
3.position,用于设置CALayer的位置,会有平移的效果


下面来个小的Demo看看实际的效果

改变了背景颜色,它默认就有动画效果
    //1.懒加载设置一些属性
    private lazy var diyLayer:CALayer = {
       let ly = CALayer()
        ly.backgroundColor = UIColor.redColor().CGColor
        ly.bounds = CGRectMake(0, 0, 100, 100)
        ly.position = CGPoint.init(x: 200, y: 100)
        return ly
    }()
    
    
    //2.添加到根层
    override func viewDidLoad() {
        super.viewDidLoad()
        view.layer.addSublayer(diyLayer)
        
    }

     //3.点击屏幕,改变背景
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        diyLayer.backgroundColor = UIColor.greenColor().CGColor
    }

移动位置

锚点默认值是(0.5,0.5),所以刚开始是方形的1/4,后来是1/2
    //1.懒加载设置一些属性
    private lazy var diyLayer:CALayer = {
       let ly = CALayer()
        ly.backgroundColor = UIColor.redColor().CGColor
        ly.bounds = CGRectMake(0, 0, 100, 100)
        ly.position = CGPoint.init(x: 0, y: 0)
        return ly
    }()
    
     //3.点击屏幕,改变背景
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//        diyLayer.backgroundColor = UIColor.greenColor().CGColor
        diyLayer.position = CGPoint.init(x: 0, y: 400)
    }

隐式属性怎么查?
1.点击属性进去看看,

隠式动画属性

2.去文档中搜索CALayer,然后就能看到有一个文档专门告诉你有哪些隠式动画属性

本文的demo地址

上一篇 下一篇

猜你喜欢

热点阅读