iOS - GitHub乾貨分享(APP引導頁的高度集成 - DHGuidePageHUD - ②)

  距上一篇博客"APP引導頁的高度集成 - DHGuidePageHUD - ①"的發佈有一段時間了, 後來又在SDK中補充了一些新的內容進去可是一直沒來得及跟你們分享, 今天來跟你們分享一下, 仍是一行代碼搞定APP引導頁, 廢話很少說直接進入主題!html

  若是還沒來得及看上一篇博客的話, 請你們點擊這裏進入: iOS - GitHub乾貨分享(APP引導頁的高度集成 - DHGuidePageHUD - ①) ;git

  (一)老規矩先上GitHub鏈接,給你們節省時間  GitHub地址: https://github.com/dingding3w/DHGuidePageHUDgithub

  (二)本次更新效果圖展現:web

              

  (三)本次SDK更新說明:數組

    因爲更新時間拖得有點長, 本次SDK的更新直接從V1.0.0更新到V2.0.0版本, 而且本次只要更新的內容是由V1.0.0版本的"靜態APP引導頁"更新到V2.0.0版本的"靜態APP引導頁和動態APP引導頁"兩種狀態(保持原有的功能不變添加新的功能), 而且SDK的使用方式不變, SDK內部會自動識別開發者傳入的圖片是靜態圖片仍是動態圖片, 方便了開發者的使用, 加快了開發效率, 一行代碼搞定APP引導頁的建立, 傳入參數便可:網絡

/**
 *  DHGuidePageHUD
 *
 *  @param frame      位置大小
 *  @param imageArray 引導頁圖片數組(NSString)
 *  @param isHidden   開始體驗按鈕是否隱藏(YES:隱藏-引導頁完成自動進入APP首頁; NO:不隱藏-引導頁完成點擊開始體驗按鈕進入APP主頁)
 *
 *  @return DHGuidePageHUD對象
 */
- (instancetype)dh_initWithFrame:(CGRect)frame imageNameArray:(NSArray<NSString *> *)imageNameArray buttonIsHidden:(BOOL)isHidden;

  (四)本次SDK更新的內容:ide

    (1)在原有SDK的基礎上添加"DHGifImageOperation" GIF動圖圖片處理類(該類能夠處理本地GIF圖片和網絡GIF圖片, 同時添加經過圖片Data來判斷該圖片的格式, 判斷更加嚴謹):oop

    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.mui

#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)最後仍是在APP引導頁跳轉APP首頁的時候記得remove掉當前APP引導頁,防止產生沒必要要的麻煩(最好remove掉😄):

- (void)removeFromSuperview {
    [timer invalidate];
    timer = nil;
    [super removeFromSuperview];
}

  (五)工做之餘還寫了其餘的兩個SDK, 來不及寫博客跟你們分享, 先把GitHub地址分享跟你們, 若是以爲對您有幫助, 請抽出一秒鐘的時間點擊GitHub右上角的小星星✨Star一下, Thank you~😄😄;

    GitHub地址: https://github.com/dingding3w/DHAlertViewHUD (快速繼承APP提示框);

    GitHub地址: https://github.com/dingding3w/DHLaunchPageHUD (一行代碼集成APP啓動頁, 包含有廣告和無廣告兩種樣式);

  (六)以上就是我對DHGuidePageHUD這個APP引導頁第三方SDK的理解與講解,所有代碼已經上傳至GitHub連接,但願你們相互補充相互學習;

相關文章
相關標籤/搜索