当前位置:编程学习 > wap >>

IPHONE GIF播放的方式

1.UIWebView 播放(无法控制周期)

.h

 @inte易做图ce webViewController : UIViewController { 
    IBOutlet UIWebView *WebView; 
    IBOutlet UINavigationBar *Nav; 

@property (nonatomic, retain) IBOutlet UIWebView *WebView; 
@end 

.m

 - (void)viewDidLoad { 
    [super viewDidLoad]; 
    [WebView setOpaque:NO]; 
    [WebView setBackgroundColor:[UIColor clearColor]]; 
    Nav.topItem.title=@"Welcome"; 
    Nav.topItem.leftBarButtonItem=nil;   
    NSString* gifFileName = @"j_0002.gif"; 
    NSMutableString* htmlStr = [NSMutableString string]; 
    [htmlStr appendString:@"Hello Honey"]; 
    [htmlStr appendString:@"<p><img src=\""]; 
    [htmlStr appendFormat:@"%@",gifFileName]; 
    [htmlStr appendString:@"\" alt=\"picture\"/>"]; 
    [WebView loadHTMLString:htmlStr baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 
} www.zzzyk.com

2.glgif提供的开源代码实现(目前无法控制周期,需要自己再研究)


3.使用UIView的animation接口实现(GIF需要整理出每张图片)

动画可以用UIImageView,把动画的每一帧做成图片,转换成UIImage保存在animationImages数组中,调用- (void)startAnimating;就能看到动画


4.把GIF的通过GIF的格式转换成每张图片,通过UIView的animation的接口实现(GIF的格式貌似还是有问题,有部分图片的背景有问题)

view plain
- (NSMutableArray*)getImgArrayByName:(NSString*)name 

    //happybaby20 
    NSURL *threeUrl =[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"crad"  
                                                                            ofType:@"gif"]]; 
    NSData* data = [[NSData alloc]initWithContentsOfURL:threeUrl]; 
    NSMutableArray* array = nil; 
//  long word = ::SizeofResource(handle,hrsrc); 
//  char* lpBy = (char*)LoadResource(handle,hrsrc); 
    DWORD word = data.length; 
    BYTE* lpBy = (BYTE*)data.bytes; 
    //每张图保存的指针 需要释放 
    BYTE* pByte[100] = {0}; 
    //每张图的大小 
    DWORD nu[100] = {0}; 
    //图片数量 
    int num = 0; 
    DWORD firstLocation = 0; 
    for(DWORD j=0;j<word;j++) 
    { 
        if(lpBy[j]==0x2c) 
        { 
            if(lpBy[j-1]==0x00) 
            {                
                if(num==0) 
                { 
                    firstLocation = j; 
                } 
                 
                if (num== 10) 
                { 
                    int sdf=nu[num]; 
                    int sdfadf=0; 
                } 
                 
                PGifImage nowImage = (PGifImage)&lpBy[j+1]; 
                 
                if(nowImage->Flag.a==0) 
                { 
                    DWORD number = 1+sizeof(GifImage); 
                    while(lpBy[j+number]!=0) 
                    { 
                        number = number+(DWORD)lpBy[j+number]+1; 
                    } 
                    number++; 
                    pByte[num] = new BYTE[number]; 
                    memset(pByte[num],0,number); 
                    for(DWORD n=0;n<number;n++) 
                    { 
                        *(BYTE*)(pByte[num]+n) = lpBy[j+n]; 
                    } 
                    nu[num] = number; 
                    j = j+number-1; 
                    num++; 
 &nbs

补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,