1. 程式人生 > >iOS 直接載入gif動畫

iOS 直接載入gif動畫

<pre name="code" class="objc">// iOS 載入gif動畫,不用一幀幀切圖,直接實現載入.gif圖片
</pre><pre name="code" class="objc">// 首先我們定義了一個<span style="font-family: Arial, Helvetica, sans-serif;">NTVGifAnimationView類,來載入</span>
#import <UIKit/UIKit.h>
#import <MobileCoreServices/MobileCoreServices.h>
#import <ImageIO/ImageIO.h>

#define Gif_W 114
#define Lab_H 30
#define Gif_H (114+Lab_H)

@interface NTVGifAnimationView : UIView
{
    CGImageSourceRef _gif; // 儲存gif動畫
    NSDictionary *_gifProperties; // 儲存gif動畫屬性
    size_t _index; // gif動畫播放開始的幀序號
    size_t _count; // gif動畫的總幀數
    NSTimer *_timer; // 播放gif動畫所使用的timer
    UIView *_gifView;
    UILabel *_label;
}
</pre><pre name="code" class="objc"><p class="p1"><span class="s1">/**</span></p><p class="p2"><span class="s2"> *  初始化方法</span></p><p class="p1"><span class="s1"> *</span></p><p class="p1"><span class="s1"> *  @param frame </span><span style="font-family: Arial, Helvetica, sans-serif;">NTVGifAnimationView 物件的</span><span style="font-family: Arial, Helvetica, sans-serif;">frame</span></p><p class="p1"><span class="s1"> *  @param <span style="font-family: Arial, Helvetica, sans-serif;">filePath gif圖片地址</span></span></p><p class="p1"><span class="s1"> *</span></p><p class="p1"><span class="s1"> */</span></p>
- (id)initWithFrame:(CGRect)frame filePath:(NSString *)filePath;

- (void) playGif; // 播放gif動畫
- (void)stopGif;  // 停止gif動畫

@end

</pre><br /><pre name="code" class="objc">#import "NTVGifAnimationView.h"

#import <QuartzCore/QuartzCore.h>

@implementation NTVGifAnimationView

- (id)initWithFrame:(CGRect)frame filePath:(NSString *)filePath
{
    self = [super initWithFrame:frame];
    if (self)
    {
        CGRect rect = frame;
        _gifView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, rect.size.width, rect.size.height - Lab_H)];
        _gifView.backgroundColor = [UIColor clearColor];
        [self addSubview:_gifView];
        _label = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(_gifView.frame), rect.size.width, Lab_H)];
        _label.textAlignment = NSTextAlignmentCenter;
        _label.backgroundColor = [UIColor clearColor];
        _label.text = @"載入中...";
        [self addSubview:_label];
        
        NSDictionary *gifLoopCount = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount];
        
        _gifProperties = [NSDictionary dictionaryWithObject:gifLoopCount forKey:(NSString *)kCGImagePropertyGIFDictionary];
        
        _gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:filePath], (CFDictionaryRef)_gifProperties);
        
        _count =CGImageSourceGetCount(_gif);
        
        
    }
    return self;
}

-(void)play
{
    _index ++;
    _index = _index%_count;
    CGImageRef ref = CGImageSourceCreateImageAtIndex(_gif, _index, (CFDictionaryRef)_gifProperties);
    _gifView.layer.contents = (__bridge id)ref;
    CFRelease(ref);
}

- (void)dealloc
{
    DLog(@"dealloc");
    CFRelease(_gif);
}

- (void) playGif
{
    _timer = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(play) userInfo:nil repeats:YES];
    [_timer fire];
}

- (void)stopGif
{
    [_timer invalidate];
    _timer = nil;
    [self removeFromSuperview];
}

@end
</pre><pre name="code" class="objc">

相關推薦

iOS 直接載入gif動畫

<pre name="code" class="objc">// iOS 載入gif動畫,不用一幀幀切圖,直接實現載入.gif圖片</pre><pre name="code" class="objc">// 首先我們定義了一個<sp

[IOS 開發] 利用UIWebView 載入GIF動畫

如果你使用過iOS版本的Spotify ,你會注意到在這款應用的新版本中,他們使用了一個播放的視訊作為app啟動的背景。相對於靜態的圖片背景來說,這是一個相當酷的設計。如果你還沒有見過這類設計,可以瞄一下我做的最終結果: 僅僅為了讓你覺得有趣,我在從柏林到格拉茨的火車

載入Gif動畫

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:

可以載入Gif動畫和png等圖片的方法和控制元件

final Guide_Result result = new Gson().fromJson(str, Guide_Result.class); // result.setMessage("http://img4.duitang.com/uploads/blog/201405

ios中播放gif動畫

轉自:http://blog.csdn.net/lovenjoe/article/details/7487142 iPhone SDK提供了多種動畫手段,UIView、UIImageView和CALayer都支援動畫。但如何處理常見的gif動畫呢?UIWebView提供了

優化載入gif動畫

專案開發中都會用到各種載入進度的動畫,有幾下幾種方式可以參考: 1、使用animation-list一幀一幀的播放出來 最簡單的方式是將設計同學給的png序列直接放到一個 animation-list中 然後直接,放在設定為一個ImageView就

整合大量開源庫專案(八)可以載入Gif動畫的GifImageView

上週大多數時間都是根據興起,想到什麼做什麼寫了幾個自定義控制元件,把Soyi丟在那沒怎麼動,今天就把寫的東西整合進來,順便把SOyi”個人研發的結構理一下”。 先上一下今天整合之後的效果,以及新加進來的幾個庫: 按照慣例,貼一下Gradle的配置:

1.4 使用UIWebView載入HTML和Gif動畫 [iOS開發中的神兵利器]

1. 本節課將為您演示,如何使用網頁檢視載入網頁程式碼和Gif動畫。此時我們已經在專案中匯入了一張Gif圖片。 2. 然後在左側的專案導航區,開啟檢視控制器的程式碼檔案。 3. 現在開始編寫程式碼,首先實現使用網頁檢視載入網頁程式碼的功能。 4. 新增一個網頁檢視物件,作為當

iOS載入Gif圖片的N種方式

1.系統UIImageView 多張圖片組成動畫 /** * UIImageView 動畫 * Memory-23M */ -(void)gifPlay1 { // NSArray *[email protected][@"image0.pn

ios-使用SDWebImage載入Gif圖片的問題

我們在SDWebImage 4.0之前,如果直接使用sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock是可以顯示gif影象

iOS SDWebImage 載入網路 gif

在SDWebImage 4.4.0 版本之前想要通過url載入展示gif效果, 只需要用 UIImageView 建立的物件呼叫下面的方法就能實現: #import <SDWebImage/UIImageView+WebCache.h>

iOS:在介面顯示gif動畫圖片

預設cocoa touch無此功能,不過我們可以站在github肩上輕鬆實現該功能。 首先是安裝CocoaPods,Pods依賴RubyGem,由於國內網路條件導致會出現安裝卡死的現象,如果出現類似的問題,大家可以參考我ruby安裝源的相關文章。 安裝C

Android的Gif動畫載入

我們都知道Android是不直接支援Gif檔案的載入的(當然了現在的Glide圖片載入框架是支援GIF格式的檔案的,Picasso暫時是不支援的,但是為了這一個小小的功能卻匯入一個庫豈不是得不償失,另外我們這裡主要是學習),但是有時候美工會直接給我們Gif格式的檔案,這時候

iOS直接使用Gif圖片

今天有兩個朋友問我如何直接在iOS中使用GIF圖片,查了下咱們的度娘看到了簡單的方法就是直接使用webView來載入。webView的好處在於每個subFrame之間的delay可以按照圖片的設定顯示出來。 還有個辦法就是使用定時器模擬幀數,使用imageIO流來讀取GIF

iOS 自定義載入等待動畫

一般來說,我們的專案中請求網路資料是一個比較耗時的操作,在請求的過程中如果給使用者只展示空白的頁面或者預設的頁面,難免顯得有些單調,這個時候我們可以新增一個指示動畫,開始請求的時候執行動畫,資料請求下來了停止動畫,這樣使用者體驗會好一些。下面開始自定義我們自己的載入指示動畫

Fresco載入gif實現圓角(無動畫

/** * 將gif處理成圓形 * * @param imageView * @param url * @param reqWidth * @param reqHeight */ publ

iOS開發 ----- 載入動畫之牛頓擺的實現

牛頓擺動畫 自己看動畫有一段時間了,但是還是不是很能理解其中的一些屬性方法之類的東西,琢磨了一下午寫了一個牛頓擺的動畫,這裡記錄一下,一遍以後檢視先上圖 先說下思路 說下牛頓擺的大致運動過程 根據牛頓擺的原理,中間是不動得,只有兩邊

iOS 載入Gif圖片

Gif圖片是非常常見的圖片格式,尤其是在聊天的過程中,Gif表情使用地很頻繁。但是iOS竟然沒有現成的支援載入和播放Gif的類。簡單地彙總了一下,大概有以下幾種方法:一、載入本地Gif檔案1、使用UIW

iOS開發之初:根據一張gif圖,返回其中每一幀的圖片陣列(ImageView載入gif))

在APP開發過程中能用到gif圖的地方無非就是重新整理和載入動畫了(等用到小動畫的地方).但是UIImageView是無法直接載入gif圖的,ImageView提供了一個載入動畫圖片陣列的方法..那要有很多幀.png/.jpg的圖片才行…但是像我這種沒有美工的開

能夠播放gif動畫的ImageView

ima data googl factor ida nal settime canvas off 一般ImageView並不能播放gif動畫。 此處播放gif動畫的核心是: 1.將gif中的每一幀拿出來,然後使用Movie類的setTime()和draw()這兩