YYImageアニメーション-YYYYYitコンポーネントの1つ
4867 ワード
とくせい
使用法
アニメーションタイプの画像を表示
// : [email protected]
UIImage *image = [YYImage imageNamed:@"ani.gif"];
UIImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
フレームアニメーションを再生
// : frame1.png, frame2.png, frame3.png
NSArray *paths = @[@"/ani/frame1.png", @"/ani/frame2.png", @"/ani/frame3.png"];
NSArray *times = @[@0.1, @0.2, @0.1];
UIImage *image = [YYFrameImage alloc] initWithImagePaths:paths frameDurations:times repeats:YES];
UIImageView *imageView = [YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
sprite sheetアニメーションの再生
// 8 * 12 sprites in a single sheet image
UIImage *spriteSheet = [UIImage imageNamed:@"sprite-sheet"];
NSMutableArray *contentRects = [NSMutableArray new];
NSMutableArray *durations = [NSMutableArray new];
for (int j = 0; j < 12; j++) {
for (int i = 0; i < 8; i++) {
CGRect rect;
rect.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
rect.origin.x = img.size.width / 8 * i;
rect.origin.y = img.size.height / 12 * j;
[contentRects addObject:[NSValue valueWithCGRect:rect]];
[durations addObject:@(1 / 60.0)];
}
}
YYSpriteSheetImage *sprite;
sprite = [[YYSpriteSheetImage alloc] initWithSpriteSheetImage:img
contentRects:contentRects
frameDurations:durations
loopCount:0];
YYAnimatedImageView *imageView = [YYAnimatedImageView new];
imageView.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
imageView.image = sprite;
[self.view addSubview:imageView];
アニメーション再生コントロール
YYAnimatedImageView *imageView = ...;
// :
[imageView stopAnimating];
// :
[imageView startAnimating];
// :
imageView.currentAnimatedImageIndex = 12;
// :
image.currentIsPlayingAnimation;
// KVO。
ピクチャデコード
// ( ):
YYImageEncoder *jpegEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeJPEG];
jpegEncoder.quality = 0.9;
[jpegEncoder addImage:image duration:0];
NSData jpegData = [jpegEncoder encode];
// ( GIF/APNG/WebP):
YYImageEncoder *webpEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeWebP];
webpEncoder.loopCount = 5;
[webpEncoder addImage:image0 duration:0.1];
[webpEncoder addImage:image1 duration:0.15];
[webpEncoder addImage:image2 duration:0.2];
NSData webpData = [webpEncoder encode];
ピクチャタイププローブ
//
YYImageType type = YYImageDetectType(data);
if (type == YYImageTypePNG) ...
インストール
CocoaPods
// : [email protected]
UIImage *image = [YYImage imageNamed:@"ani.gif"];
UIImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
// : frame1.png, frame2.png, frame3.png
NSArray *paths = @[@"/ani/frame1.png", @"/ani/frame2.png", @"/ani/frame3.png"];
NSArray *times = @[@0.1, @0.2, @0.1];
UIImage *image = [YYFrameImage alloc] initWithImagePaths:paths frameDurations:times repeats:YES];
UIImageView *imageView = [YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
// 8 * 12 sprites in a single sheet image
UIImage *spriteSheet = [UIImage imageNamed:@"sprite-sheet"];
NSMutableArray *contentRects = [NSMutableArray new];
NSMutableArray *durations = [NSMutableArray new];
for (int j = 0; j < 12; j++) {
for (int i = 0; i < 8; i++) {
CGRect rect;
rect.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
rect.origin.x = img.size.width / 8 * i;
rect.origin.y = img.size.height / 12 * j;
[contentRects addObject:[NSValue valueWithCGRect:rect]];
[durations addObject:@(1 / 60.0)];
}
}
YYSpriteSheetImage *sprite;
sprite = [[YYSpriteSheetImage alloc] initWithSpriteSheetImage:img
contentRects:contentRects
frameDurations:durations
loopCount:0];
YYAnimatedImageView *imageView = [YYAnimatedImageView new];
imageView.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
imageView.image = sprite;
[self.view addSubview:imageView];
YYAnimatedImageView *imageView = ...;
// :
[imageView stopAnimating];
// :
[imageView startAnimating];
// :
imageView.currentAnimatedImageIndex = 12;
// :
image.currentIsPlayingAnimation;
// KVO。
// ( ):
YYImageEncoder *jpegEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeJPEG];
jpegEncoder.quality = 0.9;
[jpegEncoder addImage:image duration:0];
NSData jpegData = [jpegEncoder encode];
// ( GIF/APNG/WebP):
YYImageEncoder *webpEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeWebP];
webpEncoder.loopCount = 5;
[webpEncoder addImage:image0 duration:0.1];
[webpEncoder addImage:image1 duration:0.15];
[webpEncoder addImage:image2 duration:0.2];
NSData webpData = [webpEncoder encode];
//
YYImageType type = YYImageDetectType(data);
if (type == YYImageTypePNG) ...
CocoaPods
pod 'YYImage'
を追加します.pod install
またはpod update
を実行する.
を導入する.pod 'YYImage/WebP'
を追加できます.Carthage
github "ibireme/YYImage"
を追加します.carthage update --platform ios
を実行し、生成されたframeworkをプロジェクトに追加します.
を導入する.手動インストール
YYImage.h
を導入する.Vendor/WebP.framework
(静的ライブラリ)をプロジェクトに追加できます.よくある質問
Q:どうしてWebP画像を表示できないのですか?A:WebP.frameworkはすでにあなたの工事に追加されました.YYImageWebPAvailable()を呼び出して、WebPコンポーネントが正しくインストールされているかどうかを確認できます.
Q:どうしてAPNG動画を再生できないのですか?A:Build SettingsのCompress PNG FilesとRemove Text Metadata From PNG Filesを無効にする必要があります.APNGファイルの拡張子をapngに変更することもできます.
関連接続
モバイル端末画像フォーマットiOS処理画像のいくつかの小さなTip GitHub位置を調査する
モバイル端末画像フォーマットiOS処理画像のいくつかの小さなTip GitHub位置を調査する