iOS動(dòng)畫(三):核心動(dòng)畫中縮放和旋轉(zhuǎn)(Swift)

參考:第五篇:CABasic Animation溃槐。iOS動(dòng)畫系列之五:基礎(chǔ)動(dòng)畫之縮放篇&旋轉(zhuǎn)篇

原理和上一篇是相同的蜘澜,不同之處是keyPath屬性惧蛹,縮放時(shí)是keyPathtransform.scale右冻,旋轉(zhuǎn)時(shí)keyPathtransform.rotation档玻。

class ScaleRotationViewController: UIViewController {
    // 用于縮放的layer
    lazy var redLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 125, y: 150), backgroundColor: UIColor.red)
    }()
    
    lazy var greenLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 125, y: 250), backgroundColor: UIColor.green)
    }()
    
    lazy var cyanLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 125, y: 350), backgroundColor: UIColor.cyan)
    }()
    
    lazy var blueLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 125, y: 450), backgroundColor: UIColor.blue)
    }()
    
    // 用于旋轉(zhuǎn)的Layer
    lazy var redRotationLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 300, y: 150), backgroundColor: UIColor.red)
    }()
    
    lazy var greenRotationLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 300, y: 250), backgroundColor: UIColor.green)
    }()
    
    lazy var cyanRotationLayer: CALayer = {
        return self.createLayer(position: CGPoint(x: 300, y: 350), backgroundColor: UIColor.cyan)
    }()
    

    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 添加縮放的動(dòng)畫
        redLayer.add(createAnimation(keyPath: "transform.scale.x", toValue: 0.5), forKey: nil)
        
        greenLayer.add(createAnimation(keyPath: "transform.scale.y", toValue: 0.5), forKey: nil)
        
        cyanLayer.add(createAnimation(keyPath: "transform.scale.z", toValue: 0.5), forKey: nil)
        
        blueLayer.add(createAnimation(keyPath: "transform.scale", toValue: 0.5), forKey: nil)
        
        
        
        // 添加旋轉(zhuǎn)的動(dòng)畫
        redRotationLayer.add(createAnimation(keyPath: "transform.rotation.x", toValue: CGFloat(Double.pi / 4)), forKey: nil)
        
        greenRotationLayer.add(createAnimation(keyPath: "transform.rotation.y", toValue: CGFloat(Double.pi / 4)), forKey: nil)
        
        cyanRotationLayer.add(createAnimation(keyPath: "transform.rotation.z", toValue: CGFloat(Double.pi / 4)), forKey: nil)
        
        
        self.creatLabel(title: "縮放", frame: CGRect(x: 100, y: 80, width: 50, height: 20))
        self.creatLabel(title: "旋轉(zhuǎn)", frame: CGRect(x: 250, y: 80, width: 50, height: 20))
        self.creatLabel(title: "X軸", frame: CGRect(x: 20, y: 125, width: 50, height: 20))
        self.creatLabel(title: "Y軸", frame: CGRect(x: 20, y: 225, width: 50, height: 20))
        self.creatLabel(title: "Z軸", frame: CGRect(x: 20, y: 325, width: 50, height: 20))
        self.creatLabel(title: "XYZ軸", frame: CGRect(x: 20, y: 425, width: 50, height: 20))
    }


    // 創(chuàng)建calayer
    func createLayer (position: CGPoint, backgroundColor: UIColor) -> CALayer {
        //創(chuàng)建calayer
        let layer = CALayer()
        //設(shè)置位置和大小
        layer.position = position
        layer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
        //設(shè)置背景顏色
        layer.backgroundColor = backgroundColor.cgColor
        //把layer添加到UIView的layer上
        self.view.layer.addSublayer(layer)
        
        return layer
    }
    
    // 創(chuàng)建基礎(chǔ)Animation
    func createAnimation (keyPath: String, toValue: CGFloat) -> CABasicAnimation {
        //創(chuàng)建動(dòng)畫對(duì)象
        let scaleAni = CABasicAnimation()
        //設(shè)置動(dòng)畫屬性
        scaleAni.keyPath = keyPath
        
        //設(shè)置動(dòng)畫的起始位置。也就是動(dòng)畫從哪里到哪里躯畴。不指定起點(diǎn)民鼓,默認(rèn)就從positoin開始
        scaleAni.toValue = toValue
        
        //動(dòng)畫持續(xù)時(shí)間
        scaleAni.duration = 2;
        
        //動(dòng)畫重復(fù)次數(shù)
        scaleAni.repeatCount = Float(CGFloat.greatestFiniteMagnitude)
        
        return scaleAni;
    }
    
    
    //創(chuàng)建Label
    fileprivate func creatLabel (title: String, frame: CGRect) -> (){
        let label = UILabel()
        
        label.text = title
        label.frame = frame
        label.textColor = UIColor.darkGray
        label.font = UIFont.systemFont(ofSize: 12)
        
        self.view.addSubview(label)
        
    }
}

代碼: 89-Animation/CABasic Animation

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蓬抄,隨后出現(xiàn)的幾起案子丰嘉,更是在濱河造成了極大的恐慌,老刑警劉巖嚷缭,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饮亏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阅爽,警方通過查閱死者的電腦和手機(jī)路幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來付翁,“玉大人简肴,你說我怎么就攤上這事“俨啵” “怎么了砰识?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵能扒,是天一觀的道長。 經(jīng)常有香客問我辫狼,道長初斑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任膨处,我火速辦了婚禮见秤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘真椿。我一直安慰自己鹃答,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布瀑粥。 她就那樣靜靜地躺著挣跋,像睡著了一般三圆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天滋饲,我揣著相機(jī)與錄音燕酷,去河邊找鬼。 笑死路媚,一個(gè)胖子當(dāng)著我的面吹牛黄琼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播整慎,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼脏款,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了裤园?” 一聲冷哼從身側(cè)響起撤师,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拧揽,沒想到半個(gè)月后剃盾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淤袜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年痒谴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铡羡。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡积蔚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烦周,到底是詐尸還是另有隱情库倘,我是刑警寧澤临扮,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站教翩,受9級(jí)特大地震影響杆勇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饱亿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一蚜退、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彪笼,春花似錦钻注、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泵肄,卻和暖如春捆交,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腐巢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工品追, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冯丙。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓肉瓦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胃惜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泞莉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容