---恢復內容開始---
初始化一個按鈕
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來實現,就不一一作介紹了。