動畫--簡單方法

一、animate方法

它位于UIView類中

UIView.animate(withDuration:  ,
 delay:  ,
 usingSpringWithDamping: ,
 initialSpringVelocity:  ,
 options:  ,
 animations: <() -> Void>,
 completion:() -> Void)

它是每一個(gè)動畫的基礎(chǔ)

二、動畫定義

動畫是用快速顯示一系列靜態(tài)圖片(幀)來模擬動作和圖形轉(zhuǎn)換的過程。
動畫是物體移動或者尺寸變化的“幻影”
首幀[第一幀]--->第二幀--->第三幀--->尾幀

三、如何生成這么多的幀數(shù)?

只需在UIView.animate中指定首幀和尾幀,其他的系統(tǒng)會幫我們自動計(jì)算。

四、如何改變動畫尺寸呢?

transform函數(shù)集 > 縮放、旋轉(zhuǎn)和移動視圖

@ 縮放:
//一開始不顯示
RatingStackView.transform = CGAffineTransform(scaleX: 0, y: 0)
@ 移動:
RatingStackView.transform = CGAffineTransform(translationX: 0, y: 500)
override func viewDidAppear(_ animated: Bool) {
      
        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {)
            self.RatingStackView.transform = CGAffineTransform(translationX: 0, y: 0)
        }, completion: nil)
    }
@ 動畫組合:
let startPos = CGAffineTransform(translationX: 0, y: 500)
let startScale = CGAffineTransform(scaleX: 0, y: 0)
RatingStackView.transform = startScale.concatenating(startPos)
 override func viewDidAppear(_ animated: Bool) {

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {
            let endPos = CGAffineTransform(translationX: 0, y: 0)
            let endScale = CGAffineTransform.identity
            self.RatingStackView.transform = endPos.concatenating(endScale)
        }, completion: nil)
    }
注意:
這里動畫的 首幀設(shè)置 和 尾幀設(shè)置 需要按照AB BA的方式排列
不能以ABAB的方式排列,否則只會執(zhí)行B的動畫

五、設(shè)置動畫啟動時(shí)機(jī)和時(shí)長

選擇在當(dāng)視圖每一次顯示完畢的時(shí)候,即在viewDidAppear加入:

override func viewDidAppear(_ animated: Bool) {
        UIView.animate(withDuration: 0.3) {
            //顯示視圖原來的樣子
            self.RatingStackView.transform = CGAffineTransform.identity
        }
    }

六、補(bǔ)充動畫效果

Damping:達(dá)到尾幀之前的震蕩擺動效果和時(shí)間
initialSpringVelocity:初識速度
自iOS7開始有的,可把動畫方法替換成

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {
            self.RatingStackView.transform = CGAffineTransform.identity
        }, completion: nil)
補(bǔ)充KVC
Key Path Type Value
layer.cornerRadius Number 20
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,203評論 3 119
  • 前言: UIVIew Animation 是 iOS 提供的最基礎(chǔ)的一組用于實(shí)現(xiàn) UIView 動畫的類庫。在 U...
    謝謝生活閱讀 3,388評論 0 5
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,296評論 4 61
  • 0205(給自己存款的第53天) 親愛的師師,我要抱抱如此委屈的你 我要給你更多力量勇敢表達(dá)自己內(nèi)心的感受 記住此...
    師師成長記閱讀 187評論 0 0
  • 用于繪畫的 canvas,SVG 元素 用于媒介回放的 video 和 audio 元素 拖放Drag和drop ...
    Pretty_Boy閱讀 136評論 0 0

友情鏈接更多精彩內(nèi)容