iOS多張圖片動畫(序列幀)造成的內(nèi)存增加處理

開發(fā)中可能會遇到一系列圖片組成的動畫功能赦邻,圖片可能會達到幾十張甚至上百張炕倘,這時我們會用到序列幀的方法把這些圖片放到數(shù)組中隐孽,讓imageview的animation動畫去執(zhí)行。如:

  self.imgView?.animationImages = imgArr //數(shù)組
  self.imgView?.animationDuration = animateTime//動畫時間
  self.imgView?.animationRepeatCount = repeatCount //是否重復
  self.imgView?.startAnimating()

本地加載圖片的方式常用的有:

UIImage.init(named:"" )
UIImage.init(contentsOfFile: imagePath ?? "")

這兩種方式有什么不同呢躺坟?
1) imageNamed:
圖片是加載到緩存中的,即使指向他的指針被銷毀了乳蓄,內(nèi)存中依然會存在咪橙。好處是能快速加載該圖片,如果這個圖片經(jīng)常被用到建議此方法。
2) imageWithContentsOfFile:
圖片是不會緩存的美侦,如果指向他的指針被銷毀产舞,內(nèi)存也會被釋放。這個方法適合不經(jīng)常使用音榜,或者數(shù)量多的圖片庞瘸。序列幀的圖片非常適合使用這個方法。

現(xiàn)在通過下面這個例子來感受一下使用兩種方法內(nèi)存的變化赠叼。

  1. imageWithContentsOfFile方法
 // MARK: ---- 動畫
    func startAnimations(_ repeatCount:Int) {
        var stringCount = ""
        var imgArr = [UIImage]()
        var imag:UIImage?

        for index in 15..<107{
            stringCount =  index < 100 ? String(format: "000%d", index) : String(format: "00%d", index)
            let imagePath =    bundlePath.path(forResource: "load_\(stringCount)", ofType: "png")
            imag = UIImage.init(contentsOfFile: imagePath ?? "")
            imgArr.append(imag!)
        }
        self.beginAnimate(imgArr, TimeInterval(MagicView.Cookie_AnimationTime),repeatCount)
    }
    
    
    func beginAnimate(_ imgArr:Array<UIImage>,_ animateTime:TimeInterval,_ repeatCount:Int)  {
        self.imgView?.animationImages = imgArr
        self.imgView?.animationDuration = animateTime
        self.imgView?.animationRepeatCount = repeatCount
        self.imgView?.startAnimating()
    }

這個動畫是由90多張圖片組成擦囊,圖片一共有4M左右。
用真機跑的話動畫運行起來的時候


image.png

當點擊停止動畫時執(zhí)行:

 //動畫結(jié)束
    func mg_stopAnimation() {
        self.imgView?.stopAnimating()
        self.imgView?.animationImages = nil   //這句話非常重要
    }
image.png
  1. UIImage.init(named:"" )
    如果用此方法 即使執(zhí)行動畫結(jié)束的方法內(nèi)存也不會被釋放嘴办。
    demo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞬场,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涧郊,更是在濱河造成了極大的恐慌贯被,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆艘,死亡現(xiàn)場離奇詭異彤灶,居然都是意外死亡,警方通過查閱死者的電腦和手機批旺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門幌陕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汽煮,你說我怎么就攤上這事搏熄。” “怎么了暇赤?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵心例,是天一觀的道長。 經(jīng)常有香客問我鞋囊,道長止后,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任溜腐,我火速辦了婚禮坯门,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逗扒。我一直安慰自己古戴,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布矩肩。 她就那樣靜靜地躺著现恼,像睡著了一般肃续。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叉袍,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天始锚,我揣著相機與錄音,去河邊找鬼喳逛。 笑死瞧捌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的润文。 我是一名探鬼主播姐呐,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼典蝌!你這毒婦竟也來了曙砂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤骏掀,失蹤者是張志新(化名)和其女友劉穎鸠澈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體截驮,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡笑陈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了葵袭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片新锈。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖眶熬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情块请,我是刑警寧澤娜氏,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站墩新,受9級特大地震影響贸弥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜海渊,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一绵疲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臣疑,春花似錦盔憨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春问慎,著一層夾襖步出監(jiān)牢的瞬間萍摊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工如叼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冰木,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓笼恰,卻偏偏與公主長得像踊沸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挖腰,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

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