YYImageアニメーション-YYYYYitコンポーネントの1つ

4867 ワード

とくせい

  • は、WebP、PNG、GIF、JPEG、JP2、TIFF、BMP、ICO、ICNSの静的画像の表示/符号化/復号化をサポートする.
  • は、WebP、APNG、GIFの再生/符号化/復号化をサポートします.
  • は、PNG、GIF、JPEG、BMPのプログレッシブ/プログレッシブ/インターレース復号化をサポートします.
  • は、複数のピクチャからなるフレームアニメーションの再生をサポートし、単一のピクチャのsprite sheetアニメーションをサポートする.
  • 高効率のダイナミックメモリキャッシュ管理により、高性能で低メモリのアニメーション再生を保証します.
  • UIImageとUIImageViewは完全に互換性があり、使いやすいです.
  • は、カスタムアニメーションをサポートするために拡張可能なインタフェースを保持します.
  • 各クラスおよびメソッドには、完全なドキュメントコメントがあります.

  • 使用法


    アニメーションタイプの画像を表示

    //  : [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

  • cocoapodsを最新バージョンに更新する.
  • Podfileにpod 'YYImage'を追加します.
  • は、pod installまたはpod updateを実行する.
  • は、を導入する.
  • 注意:pod構成にはWebPコンポーネントが含まれていません.WebPをサポートする必要がある場合は、Podfileにpod 'YYImage/WebP'を追加できます.

  • Carthage

  • Cartfileにgithub "ibireme/YYImage"を追加します.
  • carthage update --platform iosを実行し、生成されたframeworkをプロジェクトに追加します.
  • は、を導入する.
  • 注意:carthage frameworkにはWebPコンポーネントが含まれていません.WebPをサポートする必要がある場合は、CocoaPodsでインストールするか、手動でインストールできます.

  • 手動インストール

  • YYImageフォルダ内のすべてのコンテンツをダウンロードします.
  • YYImage内のソースファイルをプロジェクトに追加(ドラッグアンドドロップ)します.
  • リンク以下frameworks:
  • UIKit
  • CoreFoundation
  • QuartzCore
  • AssetsLibrary
  • ImageIO
  • Accelerate
  • MobileCoreServices
  • libz

  • は、YYImage.hを導入する.
  • 注意:WebPをサポートする必要がある場合は、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位置を調査する