CABasicAnimation屬性動畫的基本用法


---恢復內容開始---

初始化一個按鈕

lazy var loginButton = UIButton()  //懶加載屬性
//設置 loginButton 按鈕屬性
func  setupUI() {
        loginButton.frame =  CGRect(x: 20, y: 230, width: view.frame.width - 20 * 2, height: 30)
        loginButton.backgroundColor = UIColor.cyan
        loginButton.setTitle("登錄", for: [])
        view.addSubview(loginButton)
}

 

添加一個位置動畫

let animation = CABasicAnimation() // 屬性
/// MARK: - 位置動畫
func positionAnimation() { animation.keyPath = "position" //設置動畫實例對象的效果
        
        let positionX = loginButton.frame.origin.x + 0.5 * loginButton.frame.size.width
        
        let positionY = loginButton.frame.origin.y + 0.5 * loginButton.frame.size.height + 100
        
        /// 使loginButton 按鈕向下平移100
        animation.toValue = NSValue(cgPoint: CGPoint(x: positionX, y: positionY))

        animation.duration = 2.0  //動畫執行周期

        /// 保持動畫結束之后的狀態
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加動畫到layer層 }

 添加一個縮放動畫

func scaleAnimation() {

        animation.keyPath = "transform.scale.x" //設置動畫實例對象的效果
    
        animation.fromValue = 1.0
        animation.toValue = 0.8
        
        animation.duration = 2.0  //動畫執行周期
        
        //保持動畫結束之后的狀態
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加動畫到layer層
        
    }

添加一個旋轉動畫

func rotationAnimation() {
        
        animation.keyPath = "transform.rotation" //設置動畫實例對象的效果
        
        animation.toValue = 3.14 / 2  //旋轉角度,可以使用 M_PI之類的
        
        animation.duration = 2.0  //動畫執行周期
        
        //保持動畫結束之后的狀態
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加動畫到layer層
        
    }

 

添加一個淡入淡出動畫

func opacityAnimation() {
        // Opacity 屬性和alpha屬性類似,通過設置 0~1.0的浮點數字可以實現透明效果,默認值為0,表示初試狀態為隱藏
        animation.keyPath = "opacity" //設置動畫實例對象的效果
        
        animation.fromValue = UIColor.cyan.cgColor
        
        animation.toValue = 1.0
        
        animation.duration = 5.0  //動畫執行周期
        
        //保持動畫結束之后的狀態
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加動畫到layer層
        
    }

 添加一個陰影漸變動畫

func shadowOpacityAnimation() {
        
        //陰影漸變
        loginButton.layer.shadowColor = UIColor.red.cgColor
        loginButton.layer.shadowOpacity = 0.5
        
        animation.keyPath = "shadowOffset" //設置動畫實例對象的效果
        
        animation.toValue = NSValue(cgSize: CGSize(width: 0, height: 3))
        
        animation.duration = 2.0  //動畫執行周期
        
        //保持動畫結束之后的狀態
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加動畫到layer層
        
    }

以上只是部分使用部分屬性完成了最基本的屬性動畫,當然還有更多的屬性 比如顏色,邊框,圓角等等屬性可以使用,最主要的就是通過改變keyPath來實現,就不一一作介紹了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM