本節將介紹CALayer與Core Animation基礎,找找經過Layer操做動畫的感受,你將學到如何移動、隱藏顯示Layer的方法swift
Layer中不少動畫屬性的使用方法與View相似,例如frame、position、opacity等,另外還提供了border、shadow等新屬性,接下來咱們來看看Layer中給了咱們什麼能夠動畫變化的屬性動畫
bound
Layer的範圍code
position
Layer在父Layer中的的位置,能夠分別修改x、y
-transform
改變中國屬性能夠移動、縮放、旋轉Layer,甚至能夠加入3D動畫orm
borderColor
邊框顏色對象
borderWidth
邊框寬度ci
cornerRadius
角的弧度,能夠實現圓角animation
shadowOffset
改變這個屬性能夠改變陰影與Layer的遠近it
shadowOpacity
改變這個屬性能夠改變陰影的顯示io
shadowPath
改變Layer shadow的形狀,能夠加入各類各樣的3D效果form
shadowRadius
改變陰影的模糊程度,在模擬物體朝向屏幕運動或遠離屏幕的動畫中使用較多
content
改變這個屬性能夠改變Layer內含的TIFF、PNG原始數據
mask
改變這個屬性能夠改變圖像上的遮蓋
opacity
改變內容的透明度
以上的屬性就已經足夠你實現一些基於Layer的動畫了,下面咱們經過Demo練習一下
此次咱們的Demo利用Layer Animation替換以前登陸頁面Demo中的View Animation
咱們從heading開始,在viewWillAppear
及viewDidAppear
方法中刪除有關代碼(對於控件初位置的設定在動畫中實現)
咱們在在viewDidAppear
方法中添加動畫
let flyRight = CABasicAnimation(keyPath: "position.x") flyRight.fromValue = -view.bounds.size.width/2 flyRight.toValue = view.bounds.size.width/2 flyRight.duration = 0.5
CoreAnimation中的對象都是一些簡單的數據模型,咱們只需實例化並設置相應的數據便可
一個CA實例描述了具體的Layer動畫,你能夠隨時使用這個動畫
這些動畫實例並不急於具體的Layer,你能夠在須要的時候重用代碼,每次添加動畫時都會建立它的一份拷貝
對於一個CA對象,你能夠很方便的經過keypath參數具體說明動畫的屬性
隨後咱們設置了fromValue
、toValue
屬性調整了動畫的開始與結束
最後咱們設置了動畫進行的時間
經過上面的代碼咱們已經建立了動畫,如今咱們來把動畫添加到具體的layer上
heading.layer.addAnimation(flyRight, forKey: nil)
咱們這裏調用的addAnimation(_: forKey:)方法用於將CA對象建立一個拷貝而且應用在layer上,第二個參數forKey僅僅用於動畫的使用者,經過這個參數能夠實現改變、中止這個動畫等操做。