iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

时间:2022-09-01 00:19:40

  距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大家分享一下, 还是一行代码搞定APP引导页, 废话不多说直接进入主题!

  如果还没来得及看上一篇博客的话, 请大家点击这里进入: iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①) ;

  (一)老规矩先上GitHub连接,给大家节省时间  GitHub地址: https://github.com/dingding3w/DHGuidePageHUD

  (二)本次更新效果图展示:

    iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)          iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

  (三)本次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更新的内容:

    (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:];
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] < ) {
return nil;
}
NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(, )] 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:] 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:] 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掉

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)的更多相关文章

  1. iOS - GitHub干货分享&lpar;APP引导页的高度集成 - DHGuidePageHUD - ①&rpar;

    好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...

  2. GitHub干货分享&lpar;APP引导页的高度集成 - DHGuidePageHUD&rpar;

    每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...

  3. 高仿京东到家APP引导页炫酷动画效果

    前言 京东到家APP的引导页做的可圈可点,插画+动效,简明生动地说明了APP最吸引用户的几个亮点(商品多,价格低,配送快...).本文主要分析拆解这些动画效果,并完成一个高仿Demo,完整的Demo代 ...

  4. &lbrack;Android实例&rsqb; app引导页&lpar;背景图片切换加各个页面动画效果&rpar;(申明:来源于网络)

    [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络) 地址: http://www.eoeandroid.com/thread-918356-1-1.html h ...

  5. iOS App引导页功能实现

    一.写作原因 以前都没有想着来写点东西,今天遇到件事情让我决定每次还是要做记录.因为以前自己可以轻松的完成pod spec的配置,但是今天在做的时候还是忘了遇到了很多坑.pod spec配置遇到的坑不 ...

  6. &lbrack;iOS&rsqb; App引导页的简单实现 &lpar;Swift 2&rpar;

    转载请注明出处:http://www.jianshu.com/p/024dd2d6e6e6# 已更新至 Xcode7.2.Swift2.1 在第一次打开App或者App更新后通常用引导页来展示产品特性 ...

  7. &lbrack;iOS&rsqb;简单的APP引导页的实现 &lpar;Swift&rpar;

    在第一次打开APP或者APP更新后通常用引导页来展示产品特性 我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在AppDelegate.swift中加入以下代码: func ...

  8. app引导页&lpar;背景图片切换加各个页面动画效果&rpar;

    前言:不知不觉中又加班到了10点半,整个启动页面做了一天多的时间,一共有三个页面,每个页面都有动画效果,动画效果调试起来麻烦,既要跟ios统一,又要匹配各种不同的手机,然后产品经理还有可能在中途改需求 ...

  9. android脚步---APP引导页添加

    package com.leadcore.uudatoutie; import java.util.ArrayList; import com.leadcore.uudatoutie.R; impor ...

随机推荐

  1. jQuery的&dollar;&period;ajax

    在介绍JSONP之前,先简单的介绍一些JSON.JSON是JavaScript Object Notation的缩写,是一种轻量的.可读的基于文本的数据交换开放标准.源于JavsScript编程语言中 ...

  2. div 纯数字很长时无法折行解决

    <div style="width:100%;word-wrap:break-word;word-spacing:normal;"> </div> 加上红色 ...

  3. samsung bios configuration怎么设置U盘启动

    1.用第三方U盘制作软件制作U盘启动盘,并下载正版系统镜像或纯净版镜像,下载后缀为ISO的镜像文件拷贝到U盘根目录.2.开机按F2键进入BIOS设置.选择BOOT选项—Secure Boot设置为“D ...

  4. maven 的使用

    下载Maven:http://maven.apache.org/ 解压 将解压目录的bin 子目录配置到 PATH中 4) 在命令行下运行 mvn -version  或者 mvn -v  来测试是否 ...

  5. Android AIDL 进行进程间通讯&lpar;IPC&rpar;

    编写AIDL文件时,需要注意: 1.接口名和aidl文件名相同. 2.接口和方法前不用加访问权限修饰符 (public.private.protected等,也不能用final.static). 3. ...

  6. python&lowbar;way&period;day7 模块(configparser,xml,shutil,subprocess)、面向对象(上)(创建类,类的构成,函数式编程与面向对象编程的选择,类的继承)

      python_way.day7 1.模块 configparser,xml,shutil,subprocess 1.模块 a.configparser 用于处理特定格式的文件,其本职上使用open ...

  7. &lbrack;Spark&rsqb; - SparkCore程序优化总结

    http://spark.apache.org/docs/1.6.1/tuning.html1) 代码优化 a. 对于多次使用的RDD,进行数据持久化操作(eg: cache.persist) b. ...

  8. thinkphp 3&period;2 发送邮件(Phpmailer)

    1.在该模板下Conmon模块函数公共目录新建一个function.php <?php function Sendemail(){ vendor('PHPMailer.class#phpmail ...

  9. J&period;U&period;C atomic AtomicInteger解析

    很多情况下我们只是需要简单的,高效,线程安全的递增递减方法.注意,这里有三个条件:简单,意味着程序员尽可能少的底层或者实现起来比较简单:高效,意味着耗用资源要少,程序处理速度要快: 线程安全也非常重要 ...

  10. Xcode Organizational Identifiers

    操作系统(不管是iOS或是OS X)使用bundle标识去唯一标识你的应用.Bundle标识由一个组织id和你App的名字组成. 一般的,组织id是你域名的反转.如果你的域名是example.com那 ...