iOS App引导页功能实现
一、写作原因
以前都没有想着来写点东西,今天遇到件事情让我决定每次还是要做记录。因为以前自己可以轻松的完成pod spec的配置,但是今天在做的时候还是忘了遇到了很多坑。pod spec配置遇到的坑不在这里写,后面会单独写一点,但是内容不会太多。一是方便别人,二是方便自己。
第一次来发帖,写的不对的地方,请大神指出。我一定好好的努力修改并向大家学习,但是还是不太喜欢一惯的喷子。就像大家说的经典一样`close your mouth show me your code`,英文不好如果错了,大家见谅。
因为我是鼓足勇气的来写的,是想来提升的,不是来听大家一味的喷,而不是告诉我如何提高这样是让人crash的。
Demo下载地址,先上github地址,怕到后面给忘记了。如果可以请给star我,谢谢。
二、XLJNewFeture实现原理
引导页的功能分析,其它就是一个scrollview加上一个pagecontrol最后加上一个按钮,按钮的点击事件是需要到app程序的首页。实现这个功能的方法有很多,此文只是介绍collview 来实现这个功能。
我实现的思路是这样的,最开始设计是这样的写一个类继承自UICollectionView,然后写一个UICollectionViewCell的类来实现具体的布局。但是写完之后在AppDelegate 中设置 self.windown.rootViewController的时候总是crash掉,后来查到的原因忘记了。请知道的朋友告知,我好更新上来,感激不尽。现在使用的是直接继承自UIViewController,在UIViewController上放一个UICollectionView,再由UICollectionViewLayout布局,然后自定义一个UICollectionViewCell,最后才是button的问题。
XLJNewFeature新特性
pod 'XLJNewFeature', '~> 1.0.0'
如果发现pod search XLJNewFeature 搜索出来的不是最新版本,需要在终端执行cd转换文件路径命令退回到desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了。
接口代码:
/**
* 初始化
* @param array 传入一个数组
* @param buttonSize 按钮的宽度和高度
* @param buttonTitle 按钮显示的文字
* @param imageName 按钮的图片
*@param titleColor 按钮文字的颜色
* @param startHeight 按钮的Y的比率
* @param controller 按钮点击跳转的界面
*@return
*/
- (instancetype)initWithNSArray:(NSMutableArray *)array withButtonSize:(CGSize)buttonSize withButtonTitle:(NSString *)buttonTitle withButtonImage:(NSString *)imageName withButtonTitleColor:(UIColor *)titleColor withButtonHeight:(CGFloat)startHeight withViewController:(UIViewController *)controller;
在AppDelegate中导入"XLJNewFetureController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
ViewController *homeVC = [[ViewController alloc] init];
XLJNewFetureController *newVC = [[XLJNewFetureController alloc] initWithNSArray:self.mArray withButtonSize:CGSizeMake(120, 80) withButtonTitle:@"开启旅行" withButtonImage:@"functionGuideBt1" withButtonTitleColor:[UIColor orangeColor] withButtonHeight:0.87 withViewController:homeVC];
self.window.rootViewController = newVC;
[self.window makeKeyAndVisible];
return YES;
}
其中判断当前的图片是否是最后一页,是通过indexPath.row与self.mArray.cout-1来判断的。由于是最后一页,button的hidden = NO,否则就是YES.
- (void)setCurrentPageIndex:(NSInteger)currentPage lastPageIndex:(NSInteger)lastIndex
{
if (currentPage == lastIndex) {
self.startButton.hidden = NO;
}else{
self.contentView addSubview:self.startButton];
[self.startButton.hidden = YES;
}
}
PS:
1.如果有的建议可以email:marlonxlj@163.com,谢谢你的关心,是我最大动力,请star一下哦。
2.原创作品,转载请说明出处。
效果图
iOS App引导页功能实现的更多相关文章
- [iOS] App引导页的简单实现 (Swift 2)
转载请注明出处:http://www.jianshu.com/p/024dd2d6e6e6# 已更新至 Xcode7.2.Swift2.1 在第一次打开App或者App更新后通常用引导页来展示产品特性 ...
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)
距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大 ...
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)
好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...
- GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)
每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...
- [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络)
[Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络) 地址: http://www.eoeandroid.com/thread-918356-1-1.html h ...
- 高仿京东到家APP引导页炫酷动画效果
前言 京东到家APP的引导页做的可圈可点,插画+动效,简明生动地说明了APP最吸引用户的几个亮点(商品多,价格低,配送快...).本文主要分析拆解这些动画效果,并完成一个高仿Demo,完整的Demo代 ...
- [iOS]简单的APP引导页的实现 (Swift)
在第一次打开APP或者APP更新后通常用引导页来展示产品特性 我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在AppDelegate.swift中加入以下代码: func ...
- app引导页(背景图片切换加各个页面动画效果)
前言:不知不觉中又加班到了10点半,整个启动页面做了一天多的时间,一共有三个页面,每个页面都有动画效果,动画效果调试起来麻烦,既要跟ios统一,又要匹配各种不同的手机,然后产品经理还有可能在中途改需求 ...
- iOS:判断引导页首次出现、版本更新
判断引导页首次出现方式: //选择根控制器 +(void)chooseRootViewController{ //初始化Window窗口 [AppDelegate Delegate].window = ...
随机推荐
- Fis3的前端工程化之路[三大特性篇之声明依赖]
Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...
- Windows2012R2备用域控搭建
Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自己的ip,备dns:备域控的ip备域控的主dns:自己的ip,备dns:主域控的ip 客户端主dns:主域控的ip,备dns: ...
- .NET Core系列 :3 、使用多个项目
通过前面的两篇文章,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(大致) project.json 文件中的内容是什么意思.但大多数项目往往也需要多个项目或引用的类库.我们要创建 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- Python的单元测试(一)
title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...
- Nhibernate的Session管理
参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...
- Redis链表实现
链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层 ...
- Jquery(1)
鼠标点击事件: <input type="button" value="测试" onclick="test()" /> < ...
- Java消息队列--ActiveMq 实战
1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...
- ADO.NET一小记-select top 参数问题
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 最近使用ADO.NET的时候,发现select top @count xxxx 不 ...