距上一篇博客"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連接,但願你們相互補充相互學習;