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