APP启动页_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > APP启动页

APP启动页

 2016/6/15 5:34:51  锐贝勒  程序员俱乐部  我要评论(0)
  • 摘要:关于APP启动引导页面模块时间:2016年6月14日作者:赵锐模块使用说明模块暴露在外的接口是-(void)showGuideViewWithImages:(NSArray*)images;调用时候需要传入引导页图片的名字数组即可。@interfaceGuideManager:NSObject/***实现功能:APP启动引导图**@paramimages引导图图片的名字数组*/-(void)showGuideViewWithImages:(NSArray*)images;注意:调用该方法需要在
  • 标签:启动 APP

关于APP启动引导页面模块


时间:2016年6月14日
作者:赵锐

模块暴露在外的接口是- (void)showGuideViewWithImages:(NSArray *)images;调用时候需要传入引导页图片的名字数组即可。

 

class="brush:csharp;gutter:true;">@interface GuideManager : NSObject

/**
* 实现功能:APP启动引导图
*
* @param images 引导图图片的名字数组
*/
- (void)showGuideViewWithImages:(NSArray *)images;

 

注意:调用该方法需要在- (void)viewDidAppear: (BOOL)animated; 中调用。

  • 模块实现


主要思路是在用户第一次启动的时候存储版本号,之后每次启动页面都和沙盒中存储的版本号进行对比,如果一致则跳过引导图


- (void)showGuideViewWithImages:(NSArray *)images
{
NSString * key = @"CFBundleShortVersionString";

//获得当前版本号
NSString * versionString = [NSBundle mainBundle].infoDictionary[key];
//获取沙盒中存储的版本号
NSString * sandboxString = [[NSUserDefaults standardUserDefaults] stringForKey:key];
//判断两个版本号是否相等,进而判断是否启动引导图
if (![versionString isEqualToString:sandboxString]&& self.window == nil) {

self.images = images;
self.pageControl.numberOfPages = images.count;
self.window = [UIApplication sharedApplication].keyWindow;

[self.window addSubview:self.guideView];
[self.window addSubview:self.pageControl];
//存储当前版本号到沙盒
[[NSUserDefaults standardUserDefaults] setValue:versionString forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}

 

在这个模块的功能实现中关于传参有两种方案可以选择,一种是传入图片的路径,另一种是传入图片的名字,由于一般我们用Xcode自带的Assets.xcassets来统一管理图片,而这样管理图片时,默认图片没有加入到buddle中,所以如果采用传入图片路径的方案会导致返回值为nil,所以选择传入图片名称,既可以简化代码,也可以实现功能。

关于如何处理pathForResource返回值为nil可以参考http://blog.chinaunix.net/uid-11121450-id-3460066.html。

  • 关于开发模块过程中遇到的坑

      1>首先就是外部调用接口的方法,一般常在viewDidLoad方法中调用,但是如果在这里调用启动页的方法会导致引导图片添加失败,因为此时keyWindow为nil,所以添加不上去。

  2>没有真正理解keyWindow的含义,keywindow取到的是当前活跃的window而不是视图最底层的window。而且在这里就算是成功添加到底层window上,也会由于最终引导页上边盖着一层view而无法交互。

  3>尽量在引导页结束后移除视图的同时进行滞空以防野指针导致奔溃。
- 程序运行截图



关于引导页的具体写法就很简单了 可以用scrollerView或者collectionView,只要在最后加一个button即可,此处就不写了

 

发表评论
用户名: 匿名