iOS 之新特性界面
1、什么事新特性界面?
新特性界面就是第一次下载程序出现的界面,他的用途是帮助用户快速了解这款APP,所有说还是很有必要学一下的。
2、如何实现新特性界面?
实现思路:从本质上看,新特性界面就是一个全屏的ScrollView而已,但是要在程序一进来的时候判断是否是第一次使用程序。所有要在程序一启动判断版本号,这里有两种情况。一种是:没有版本号,这种肯定显示新特性界面的。另一种就是版本号低于现在程序的也要显示新特性界面(如果有本版本的新特性界面的话)。
逻辑关系如下:
具体代码如下:
1)APPDelegate里面的代码
NSString * key = @"CFBundleVersion";
// 取出沙盒中存储的上次使用软件的版本号
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastVersion = [defaults stringForKey:key]; // 获得当前软件的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
if ([currentVersion isEqualToString:lastVersion]) {
NextViewController * nextVC = [[NextViewController alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:nextVC]; self.window.rootViewController = nav;
} else { // 新版本
ViewController * vc = [[ViewController alloc]init];
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:vc]; self.window.rootViewController = nav;
// 存储新版本
[defaults setObject:currentVersion forKey:key];
[defaults synchronize];
}
2)VC中的代码:
- (void)setupFZHScrollView
{
self.fzhScrollView = [[UIScrollView alloc]init];
self.fzhScrollView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
self.fzhScrollView.contentSize = CGSizeMake(SCREEN_WIDTH * ImageNum, 0);
self.fzhScrollView.delegate = self;
self.fzhScrollView.pagingEnabled = YES;
for ( int i = 0; i< ImageNum; i++) {
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i * SCREEN_WIDTH, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
NSString * name = [NSString stringWithFormat:@"%d.jpg",i + 1];
imageView.image = [UIImage imageNamed:name];
[self.fzhScrollView addSubview:imageView];
} [self.view addSubview:self.fzhScrollView];
[self setupBtn];
}
- (void)setupBtn
{
UIButton * btn = [[UIButton alloc]init];
[btn setTitle:@"进入" forState:UIControlStateNormal];
btn.frame = CGRectMake((ImageNum - 1) * SCREEN_WIDTH + 100, 200, 100, 100);
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self.fzhScrollView addSubview:btn]; }
- (void)buttonClick
{
[self.navigationController pushViewController:[[NextViewController alloc]init] animated:YES];
}
demo下载地址:https://github.com/fengzhihao123/FZHNewFeatures
iOS 之新特性界面的更多相关文章
- iOS彩票项目--第四天,新特性界面搭建,UICollectionViewController的初次使用
一.新特性界面搭建的思路: 在AppDelegate加载主窗体的时候进行判断程序版本号,直接进入程序或者进入新特性展示界面 取出当前的版本号,与旧的版本号相比较(旧的版本号在进入程序的时候存起来 =& ...
- iOS 9应用开发教程之iOS 9新特性
iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...
- iOS开发——新特性OC篇&IOS9 SDK新特性
iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...
- iOS 8 新特性
这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...
- iOS 9 新特性
这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9.这篇文章也列出了详细描述新特性的文章. iPad多线程增强 iOS9使用Slider Over, Split View, Pict ...
- iOS 7 新特性
iOS7更新了很多引人注目的功能.用户界面完全重新设计了.iOS7为开发2D,2.5D游戏引入了全新的动画系统.加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发 ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- iOS开发——新特性OC篇&IOS9 系统新特性
IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...
- iOS开发——新特性OC篇&Objective新特性
Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...
随机推荐
- Draw Call(Unity 5中显示为SetPass calls
Draw Call(Unity 5中显示为SetPass calls
- ICG游戏:证明,先手不是必胜就是必败。
简介: ICG游戏:Impartial Combinatorial Games,公平的组合游戏. 以下是定义,来自网络,可能不够严谨: 1.两名选手:2.两名选手轮流行动,每一次行动可以在有限合法操作 ...
- sqlconnection dispose()与close()的区别
区别: IDispose接口可以通过Using关键字实现使用后立刻销毁,因此,Dispose适合只在方法中调用一次SqlConnection对象,而Close更适合SqlConnection在关闭后可 ...
- sql拼接字符串
update boc_loan_apply set birthday=concat(birthday,'-01');
- Android 禁止屏幕旋转 & 旋转屏幕时保持Activity内容
Android 禁止屏幕旋转 & 旋转屏幕时保持Activity内容 1.在应用中固定屏幕方向. 在AndroidManifest.xml的activity中加入: ...
- ASP.NET Web API之消息[拦截]处理(转)
出处:http://www.cnblogs.com/Leo_wl/p/3238719.html 标题相当难取,内容也许和您想的不一样,而且网上已经有很多这方面的资料了,我不过是在实践过程中作下记录.废 ...
- C# Redis Server分布式缓存编程(二)(转)
出处;http://www.cnblogs.com/davidgu/p/3263485.html 在Redis编程中, 实体和集合类型则更加有趣和实用 namespace Zeus.Cache.Red ...
- C/C++编程可用的Linux自带工具
GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件.当前的版本原本由在Cygnus Solutions的程序员以Binary File D ...
- Linux 基础教程 36-查看系统性能
uptime uptime命令功能比较简单,主要功能如下所示: 查看服务器的开机时长 查看CPU负载 基本用法 uptime 用法示例 [root@localhost ~]# uptime 1 ...
- struct pollfd
struct pollfd 2010年04月15日 星期四 下午 03:59 int poll (struct pollfd *fds, size_t nfds , int timeout); str ...