iOS-GitHub乾物共有(APPガイドページの高度な統合-DHGuidePageHUD-②)

9151 ワード

前のブログ「APPガイドページの高度な統合-DHGuidePageHUD-①」のリリースからしばらく経ちましたが、SDKで新しい内容を追加しました.
まだブログを見る時間がない場合は、iOS-GitHub干物共有(APPガイドページの高度統合-DHGuidePageHUD-①)をクリックしてください.
(一)古い規則は先にGitHubに接続して、みんなに時間を節約しますGitHub住所:https://github.com/dingding3w/DHGuidePageHUD
(二)今回の更新効果図の展示:
              
(三)今回のSDK更新説明:
更新時間が少し長引くため、今回のSDKの更新は直接V 1から.0.0 V 2に更新.バージョン0.0で、今回更新された内容はV 1のみです.0.0バージョンの「静的APPブートページ」をV 2に更新.0.0バージョンの「静的APPブートページと動的APPブートページ」の2つの状態(従来の機能を維持して新しい機能を追加する)であり、SDKの使用方法は変わらず、SDK内部では開発者が入力した画像が静的な画像か動的な画像かを自動的に認識し、発行者の使用を便利にし、開発効率を速め、1行のコードでAPPブートページの作成を完了し、入力パラメータ
/**
 *  DHGuidePageHUD
 *
 *  @param frame          
 *  @param imageArray        (NSString)
 *  @param isHidden             (YES:  -         APP  ; NO:   -               APP  )
 *
 *  @return DHGuidePageHUD  
 */
- (instancetype)dh_initWithFrame:(CGRect)frame imageNameArray:(NSArray *)imageNameArray buttonIsHidden:(BOOL)isHidden;

(四)今回のSDK更新内容:
(1)従来のSDKに加えて「DHGifImageOperation」GIF動図ピクチャ処理クラス(このクラスはローカルGIFピクチャとネットワークGIFピクチャを処理できるとともに、ピクチャDataによってそのピクチャのフォーマットを判断し、より厳格な判断を行う)を追加する.
    DHGifImageOperation.h
/**
 *      Data               
 */
+ (NSString *)dh_contentTypeForImageData:(NSData *)data;

/**
 *       Gif  (Path)
 *
 *  @param frame             
 *  @param gifImagePath Gif    
 *
 *  @return Gif    
 */
- (id)initWithFrame:(CGRect)frame gifImagePath:(NSString *)gifImagePath;

/**
 *       Gif  (Data)(  +  )
 *
 *  @param frame             
 *  @param gifImageData Gif  Data
 *
 *  @return Gif    
 */
- (id)initWithFrame:(CGRect)frame gifImageData:(NSData *)gifImageData;

    DHGifImageOperation.m
#pragma mark -     Data               
+ (NSString *)dh_contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"jpeg";
        case 0x89:
            return @"png";
        case 0x47:
            return @"gif";
        case 0x49:
        case 0x4D:
            return @"tiff";
        case 0x52:
            if ([data length] < 12) {
                return nil;
            }
            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
            if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                return @"webp";
            }
            return nil;
    }
    return nil;
}

#pragma mark -      Gif  (Path)
- (id)initWithFrame:(CGRect)frame gifImagePath:(NSString *)gifImagePath {
    self = [super initWithFrame:frame];
    if (self) {
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount] forKey:(NSString *)kCGImagePropertyGIFDictionary];
        gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:gifImagePath], (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.06 target:self selector:@selector(play) userInfo:nil repeats:YES];/**< 0.12->0.06 */
        [timer fire];
    }
    return self;
}

#pragma mark -      Gif  (Data)(  +  )
- (id)initWithFrame:(CGRect)frame gifImageData:(NSData *)gifImageData {
    self = [super initWithFrame:frame];
    if (self) {
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount] forKey:(NSString *)kCGImagePropertyGIFDictionary];
        gif = CGImageSourceCreateWithData((CFDataRef)gifImageData, (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.06 target:self selector:@selector(play) userInfo:nil repeats:YES];/**< 0.12->0.06 */
        [timer fire];
    }
    return self;
}

(2)最後に、アプリガイドページがアプリのトップページにジャンプしたときに、removeが現在のアプリガイドページを削除し、不要なトラブルを防止することを覚えておいてください(removeを削除したほうがいいですか?):
- (void)removeFromSuperview {
    [timer invalidate];
    timer = nil;
    [super removeFromSuperview];
}

(五)仕事の合間に他の2つのSDKを書いたので、ブログを書いてみんなと分かち合う時間がありません.まずGitHubの住所をみんなと分かち合って、もしあなたに役に立つと思ったら、1秒の時間を割いてGitHubの右上の小さな星をクリックしてください.✨スタートしてくれ
GitHubアドレス:https://github.com/dingding3w/DHAlertViewHUD(アプリのヒントボックスを素早く継承する);
GitHubアドレス:https://github.com/dingding3w/DHLaunchPageHUD(広告と広告なしの2つのスタイルを含む1行のコード統合APP起動ページ).
(六)以上は私がDHGuidePageHUDというアプリガイドページの第三者SDKに対する理解と説明で、すべてのコードはすでにGitHubリンクにアップロードされています.
転載先:https://www.cnblogs.com/dingding3w/p/5952075.html