iOS表情雨-類似微信的紅包雨

前言

最近項目在做了一個類似微信的紅包雨的功能独榴,雖然功能沒讓我做块饺,我自己也想研究下這個功能,搜一下網(wǎng)上朴沿,貌似很少有這方面的文章猜谚,研究后寫下筆記。

過程

先看看效果圖:

表情雨效果圖.gif

在iOS中悯仙,樣式簡單的動畫可以用uivew動畫來做龄毡;而樣式復雜,追求更好的動畫體驗就需要在layer層做動畫锡垄,本文的表情雨功能也是用后者。

表情雨功能剛開始接觸時我也是有點迷茫祭隔,深入了解發(fā)現(xiàn)其實原理真的很簡單货岭,稍微有點iOS的動畫基礎很容易就能完成,下面分析下做法:

用一個定時器不斷生成新的layer疾渴,給layer添加從上往下移動的動畫

self.timer =  NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: "showRain", userInfo: "", repeats: true)
 func showRain(){
        
        //創(chuàng)建畫布
        let imageV = UIImageView.init()
        imageV.image = UIImage.init(named: "x")
        imageV.frame = CGRect.init(x: 0, y: 0, width: 40, height: 40)
        //這里把這句消除動畫有問題
        self.moveLayer = CALayer.init()
        self.moveLayer.bounds = (imageV.frame)
        self.moveLayer.anchorPoint = CGPointMake(0,0)
        //此處y值需比layer的height大
        self.moveLayer.position = CGPointMake(0,-40)
        self.moveLayer.contents = imageV.image!.CGImage
        
        self.view.layer.addSublayer(self.moveLayer)
        //畫布動畫
        self.addAnimation()
        
    }

添加動畫時有一點特別需要注意千贯,因為每一個表情的運動軌跡都是不一樣的,因此表情的軌跡點的x值都應該隨機生成搞坝,于是有了下面這句代碼:

 //動畫路線搔谴,一個數(shù)組里有多個軌跡點
        moveAnimation.values = [NSValue.init(CGPoint: CGPointMake(CGFloat(Float(arc4random_uniform(320))), 10)),NSValue.init(CGPoint: CGPointMake(CGFloat(Float(arc4random_uniform(320))), 500))]

至于y值則控制從哪開始落下,落到哪結束桩撮,看各自需求敦第。以下是添加動畫的代碼:


//給畫布添加動畫
    func addAnimation() {
        //此處keyPath為CALayer的屬性
        let  moveAnimation:CAKeyframeAnimation = CAKeyframeAnimation(keyPath:"position")
        //動畫路線,一個數(shù)組里有多個軌跡點
        moveAnimation.values = [NSValue.init(CGPoint: CGPointMake(CGFloat(Float(arc4random_uniform(320))), 10)),NSValue.init(CGPoint: CGPointMake(CGFloat(Float(arc4random_uniform(320))), 500))]
        //動畫間隔
        moveAnimation.duration = 5
        //重復次數(shù)
        moveAnimation.repeatCount = 1
        //動畫的速度
        moveAnimation.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionLinear)
        self.moveLayer.addAnimation(moveAnimation, forKey: "move")
    }

結束動畫時店量,可以直接讓計時器停止

        self.timer.invalidate()

但是這樣會有點奇怪芜果,計時器停止后,原先已開始的動畫不會被停止融师,如下圖:

停止計時器.gif

再加上下面的代碼就好了右钾,讓當前頁面所有動畫都停止,這樣定時器一停止旱爆,所有動畫也結束舀射。

//停止所有l(wèi)ayer的動畫
        for item in self.view.layer.sublayers!{
        
            item.removeAllAnimations()
        }
最終效果.gif

這樣基本效果就有了。附上本文demo

結束

學習之路怀伦,與君共勉脆烟。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市空镜,隨后出現(xiàn)的幾起案子浩淘,更是在濱河造成了極大的恐慌捌朴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件张抄,死亡現(xiàn)場離奇詭異砂蔽,居然都是意外死亡,警方通過查閱死者的電腦和手機署惯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門左驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人极谊,你說我怎么就攤上這事诡右。” “怎么了轻猖?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵帆吻,是天一觀的道長。 經(jīng)常有香客問我咙边,道長猜煮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任败许,我火速辦了婚禮王带,結果婚禮上,老公的妹妹穿的比我還像新娘市殷。我一直安慰自己愕撰,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布醋寝。 她就那樣靜靜地躺著搞挣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甥桂。 梳的紋絲不亂的頭發(fā)上柿究,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音黄选,去河邊找鬼蝇摸。 笑死,一個胖子當著我的面吹牛办陷,可吹牛的內(nèi)容都是我干的貌夕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼民镜,長吁一口氣:“原來是場噩夢啊……” “哼啡专!你這毒婦竟也來了?” 一聲冷哼從身側響起制圈,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤们童,失蹤者是張志新(化名)和其女友劉穎畔况,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慧库,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡跷跪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了齐板。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吵瞻。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖甘磨,靈堂內(nèi)的尸體忽然破棺而出橡羞,到底是詐尸還是另有隱情,我是刑警寧澤济舆,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布卿泽,位于F島的核電站,受9級特大地震影響吗冤,放射性物質發(fā)生泄漏又厉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一椎瘟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侄旬,春花似錦肺蔚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汰蜘,卻和暖如春仇冯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背族操。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工苛坚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人色难。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓泼舱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親枷莉。 傳聞我的和親對象是個殘疾皇子娇昙,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜笤妙,今天將帶大家一窺ios動畫全貌冒掌。在這里你可以看...
    每天刷兩次牙閱讀 8,495評論 6 30
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • 在iOS中隨處都可以看到絢麗的動畫效果噪裕,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌股毫。在這里你可以看...
    F麥子閱讀 5,113評論 5 13