iOS-Gif播放

圖片分為靜態(tài)和動態(tài)兩種,圖片的格式有很多種,在開發(fā)中比較常見的是.png和.jpg的靜態(tài)圖片,但有的時候在App中需要播放動態(tài)圖片,比如.gif格式的小表情頭像,在IOS中并沒有提供直接顯示動態(tài)圖片的控件,下面就介紹幾種顯示動態(tài)圖片的方式。

<一> UIImageView用來顯示圖片, 使用UIImageView中的動畫數(shù)組來實現(xiàn)圖片的動畫效果

    //創(chuàng)建UIImageView,添加到界面
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
    [self.view addSubview:imageView];
    //創(chuàng)建一個數(shù)組,數(shù)組中按順序添加要播放的圖片(圖片為靜態(tài)的圖片)
    NSMutableArray *imgArray = [NSMutableArray array];
    for (int i=1; i<7; i++) {
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"clock%02d.png",i]];
        [imgArray addObject:image];
    }
    //把存有UIImage的數(shù)組賦給動畫圖片數(shù)組
    imageView.animationImages = imgArray;
    //設置執(zhí)行一次完整動畫的時長
    imageView.animationDuration = 6*0.15;
    //動畫重復次數(shù) (0為重復播放)
    imageView.animationRepeatCount = 0;
    //開始播放動畫
    [imageView startAnimating];
    //停止播放動畫  - (void)stopAnimating;
    //判斷是否正在執(zhí)行動畫  - (BOOL)isAnimating;

<二> 用UIWebView來顯示動態(tài)圖片

    //得到圖片的路徑
    NSString *path = [[NSBundle mainBundle] pathForResource:@"happy" ofType:@"gif"];
    //將圖片轉為NSData
    NSData *gifData = [NSData dataWithContentsOfFile:path];
    //創(chuàng)建一個webView,添加到界面
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 150, 200, 200)];
    [self.view addSubview:webView];
    //自動調整尺寸
    webView.scalesPageToFit = YES;
    //禁止?jié)L動
    webView.scrollView.scrollEnabled = NO;
    //設置透明效果
    webView.backgroundColor = [UIColor clearColor];
    webView.opaque = 0;
    //加載數(shù)據(jù)
    [webView loadData:gifData MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];

總結

1、通過UIImageView顯示動畫效果,實際上是把動態(tài)的圖拆成了一組靜態(tài)的圖,放到數(shù)組中,播放的時候依次從數(shù)組中取出。如果播放的圖片比較少占得內存比較小或者比較常用(比如工具條上一直顯示的動態(tài)小圖標),可以選擇用imageNamed:方式獲取圖片,但是通過這種方式加到內存中,使用結束,不會自己釋放,多次播放動畫會造成內存溢出問題。因此,對于大圖或經常更換的圖,在取圖片的時候可以選擇imageWithContentsOfFile:方式獲取圖片,優(yōu)化內存。

2、使用UIWebView顯示圖片需要注意顯示圖片的尺寸與UIWebView尺寸的設置,如果只是為了顯示動態(tài)圖片,可以禁止UIWebView滾動。在顯示動態(tài)圖片的時候,即使是動圖的背景處為透明,默認顯示出來是白色背景,這個時候需要手動設置UIWebView的透明才能達到顯示動圖背景透明的效果。
UIImageView是通過定時器來控制圖片模擬的動畫,播放的時候是設置每一幀的時長,因此在使用的時候,要盡量與動圖原本的時長靠近,不然動畫效果會有些奇怪。而通過UIWebView加載Gif動圖的時候會保持原有的幀速,不需要再次設置。

出處: http://www.cnblogs.com/jerehedu
本文版權歸 煙臺杰瑞教育科技有限公司 和博客園共有

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,318評論 4 61
  • 1. 熊好不好養(yǎng)? 答:個人覺得很好養(yǎng)!我的熊幾乎都放在室外(有雨棚遮著,淋不了大雨),夏天適當遮陰,冬天也一直放...
    我叫桃二蛋閱讀 430評論 0 0
  • 土里潛伏長,陽間存活短。 力避眾賊敵,高歌八十天。 一旦秋風起,瑟瑟漸霜寒。 蟬兒有先覺,鳴聲忒凄慘。 萬物各有命...
    緣wxh閱讀 443評論 22 23
  • 話說上世紀70年代,面向對象編程思想混沌初開,程序界風起云涌,從1989年到1994年,面向對象建模語言的數(shù)量從不...
    溪石iOS閱讀 681評論 2 11
  • “吾上可陪玉皇大帝,下可陪卑田院乞兒。眼前見天下無一個不好人”他深深熱愛生活——不管好喝不好——寫的詩詞一會批評時...
    飛鳥逐溪閱讀 531評論 0 1

友情鏈接更多精彩內容