1.簡介
CAReplicatorLayer能夠創建出指定個數的子layer的復制layer,并且根據給出的位移、顏色等進行改變。可以用該圖層做出很炫酷的動畫效果。
2.屬性
屬性 | 內容 |
---|---|
instanceCount | 創建多少復制,默認1 |
preservesDepth | ture為3D圖層,false為2D圖層 |
instanceDelay | 復制的延時,用在動畫時 |
instanceTransform | 復制子圖層時的產生位移,錨點是replicatorLayer的中心點 |
instanceColor | 設置復制圖層的顏色,默認白色 |
instanceRedOffset | 設置復制圖層相對上一個復制圖層紅色的偏移量 |
instanceGreenOffset | 設置復制圖層相對上一個復制圖層綠色的偏移量 |
instanceBlueOffset | 設置復制圖層相對上一個復制圖層藍色的偏移量 |
instanceAlphaOffset | 設置復制圖層相對上一個復制圖層透明度的偏移量 |
3.使用
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupLayer()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func setupLayer() {
//創建
let replicator = CAReplicatorLayer()
replicator.frame = view.frame
//設置復制圖層個數
replicator.instanceCount = 30
//復制間隔
replicator.instanceDelay = CFTimeInterval(1/30.0)
//一般為false
replicator.preservesDepth = false
//圖層顏色
replicator.instanceColor = UIColor.white.cgColor
//偏移量
replicator.instanceRedOffset = 0
replicator.instanceGreenOffset = -1
replicator.instanceBlueOffset = -1
replicator.instanceAlphaOffset = 0
//角度
let angle = CGFloat(M_PI*2.0)/30
replicator.instanceTransform = CATransform3DMakeRotation(angle, 0, 0, 1)
//子圖層
let instanceLayer = CALayer()
let layerWidth: CGFloat = 10
let X = view.bounds.midX - layerWidth/2
let Y = view.bounds.midY - 100;
instanceLayer.frame = CGRect(x: X, y: Y, width: layerWidth, height: layerWidth*3)
instanceLayer.backgroundColor = UIColor.red.cgColor
replicator.addSublayer(instanceLayer)
//設置動畫
let fadeAnimation = CABasicAnimation(keyPath: "opacity")
fadeAnimation.fromValue = 1
fadeAnimation.toValue = 0
fadeAnimation.duration = 1
fadeAnimation.repeatCount = Float(Int.max)
//設置初始時為透明,并且添加動畫
instanceLayer.opacity = 0
instanceLayer.add(fadeAnimation, forKey: "FadAnimation")
view.layer.addSublayer(replicator)
}
}
效果:
CAReplicatorLayer.gif