CALayer解析6:CAReplicatorLayer

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容