Jietu20170715-102132-HD.gif
Jietu20170715-101813-HD.gif
Jietu20170715-101343-HD.gif
1.每個UIView上都有一個自帶的layer艺演,我們稱他們?yōu)?code>root layer(根層)
2.所有的非根層都存在隱式動畫喘先,也就是我們手動 創(chuàng)建的layer都存在隱式動畫
什么是隱式動畫?
1.對非根層layer的屬性進行修改沃疮,默認自動的出現(xiàn)一些效果動畫
2.這些效果稱為AnimatableProperties
(可動畫屬性)
列舉幾個可動畫屬性
1.bounds ,用于設(shè)置CALayer的寬高,會有縮放效果
2.backgroundColor喂分,用于設(shè)置CALayer的背景顏色姓迅,會有漸變的效果
3.position,用于設(shè)置CALayer的位置瓣俯,會有平移的效果
下面來個小的Demo看看實際的效果
改變了背景顏色夹抗,它默認就有動畫效果
//1.懶加載設(shè)置一些屬性
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.懶加載設(shè)置一些屬性
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地址