iOS-Gif再生
2360 ワード
画像は静的と動的の2種類に分けられ、画像のフォーマットは多くの種類があり、開発でよく見られるのは.png和jpgの静的ピクチャですが、Appでダイナミックピクチャを再生する必要がある場合があります.gif形式の小さな表情のアイコンは、IOSではダイナミックピクチャを直接表示するコントロールが提供されていませんが、ダイナミックピクチャを表示する方法をいくつか紹介します.
UIImageViewは画像を表示するために使用され、UIImageViewのアニメーション配列を使用して画像のアニメーション効果を実現します.
UIWebViewで動画を表示
まとめ
1、UIImageViewでアニメーション効果を表示し、実際にはダイナミックな図を静的な図のセットに分解して配列に入れ、再生時に順番に配列から取り出す.再生される画像が比較的少ない場合、メモリが比較的小さい場合やよく使われる場合(ツールバーに表示されているダイナミックな小さなアイコンなど)、imageNamed:で画像を取得することができますが、このようにメモリに追加することで、使用が終了し、自分で解放されず、何度もアニメーションを再生するとメモリオーバーフローの問題が発生します.したがって、大きな図や頻繁に交換される図では、画像を取得する際にimageWithContentsOfFile:方式で画像を取得し、メモリを最適化することができます.
2、UIWebViewを使用して画像を表示するには、表示画像のサイズとUIWebViewサイズの設定に注意する必要があります.動画像を表示する場合、動図の背景が透明であってもデフォルトでは白い背景が表示されますが、この場合は動図の背景が透明であることを示すためにUIWebViewの透明度を手動で設定する必要があります.UIImageViewはタイマーで画像シミュレーションを制御するアニメーションで、再生時はフレームごとの時間長を設定しているので、使用するときは、できるだけ動図本来の時間長に近づけるようにしましょう.そうしないと、アニメーション効果が少しおかしくなります.一方、UIWebViewでGif動図をロードすると、元のフレームレートが維持され、再設定する必要はありません.
出典:http://www.cnblogs.com/jerehedu本文の著作権は煙台傑瑞教育科学技術有限会社とブログ園に帰属する.
UIImageViewは画像を表示するために使用され、UIImageViewのアニメーション配列を使用して画像のアニメーション効果を実現します.
// UIImageView,
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
[self.view addSubview:imageView];
// , ( )
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
imageView.animationImages = imgArray;
//
imageView.animationDuration = 6*0.15;
// (0 )
imageView.animationRepeatCount = 0;
//
[imageView startAnimating];
// - (void)stopAnimating;
// - (BOOL)isAnimating;
UIWebViewで動画を表示
//
NSString *path = [[NSBundle mainBundle] pathForResource:@"happy" ofType:@"gif"];
// NSData
NSData *gifData = [NSData dataWithContentsOfFile:path];
// webView,
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 150, 200, 200)];
[self.view addSubview:webView];
//
webView.scalesPageToFit = YES;
//
webView.scrollView.scrollEnabled = NO;
//
webView.backgroundColor = [UIColor clearColor];
webView.opaque = 0;
//
[webView loadData:gifData MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
まとめ
1、UIImageViewでアニメーション効果を表示し、実際にはダイナミックな図を静的な図のセットに分解して配列に入れ、再生時に順番に配列から取り出す.再生される画像が比較的少ない場合、メモリが比較的小さい場合やよく使われる場合(ツールバーに表示されているダイナミックな小さなアイコンなど)、imageNamed:で画像を取得することができますが、このようにメモリに追加することで、使用が終了し、自分で解放されず、何度もアニメーションを再生するとメモリオーバーフローの問題が発生します.したがって、大きな図や頻繁に交換される図では、画像を取得する際にimageWithContentsOfFile:方式で画像を取得し、メモリを最適化することができます.
2、UIWebViewを使用して画像を表示するには、表示画像のサイズとUIWebViewサイズの設定に注意する必要があります.動画像を表示する場合、動図の背景が透明であってもデフォルトでは白い背景が表示されますが、この場合は動図の背景が透明であることを示すためにUIWebViewの透明度を手動で設定する必要があります.UIImageViewはタイマーで画像シミュレーションを制御するアニメーションで、再生時はフレームごとの時間長を設定しているので、使用するときは、できるだけ動図本来の時間長に近づけるようにしましょう.そうしないと、アニメーション効果が少しおかしくなります.一方、UIWebViewでGif動図をロードすると、元のフレームレートが維持され、再設定する必要はありません.
出典:http://www.cnblogs.com/jerehedu本文の著作権は煙台傑瑞教育科学技術有限会社とブログ園に帰属する.