首先我们需要创建一个版本新特性的控制器,继承自UIViewController
@interface NewFeatureViewController ()<UIScrollViewDelegate>
{
UIPageControl *_page;
UIScrollView *_scroll;
}
@end
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在实现模块中写如下代码</span>
#pragma mark - viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor whiteColor]];
/* 1.添加UIScrollView */
[self addScrollView];
/* 2.添加图片 */
[self addScrollImages];
/* 3.添加UIPageControl */
[self addPageControl];
}
#pragma mark - UI界面初始化
#pragma mark 添加滚动视图
- (void)addScrollView
{
UIScrollView *scroll = [[UIScrollView alloc]init]; // 实例化scrollView
scroll.frame = self.view.bounds; // 设置scroll的尺寸
scroll.showsHorizontalScrollIndicator = NO; // 隐藏水平滚动条
CGSize size = scroll.frame.size; // 取出scrollView.frame.size赋值于size
scroll.contentSize = CGSizeMake(size.width * KCount, 0); // 设置滚动区域的宽和高
scroll.pagingEnabled = YES; // 分页
scroll.delegate = self; // 遵守代理方法
[self.view addSubview:scroll]; // 将scroll添加到控制器视图
_scroll = scroll;
}
#pragma mark 添加滚动显示的图片
- (void)addScrollImages
{
CGSize size = _scroll.frame.size;
for (int i = 0; i < KCount; i++)
{
UIImageView *imageView = [[UIImageView alloc]init];
/* 显示图片 */
NSString *name = [NSString stringWithFormat:@"new_feature_%d.png", i + 1 ];
imageView.image = [UIImage imageNamed:name];
/* 设置Frame */
imageView.frame = CGRectMake(i * size.width, 0, size.width, size.height);
[_scroll addSubview:imageView];
/* 在最后一页创建'立即体验'按钮 */
if (i == KCount - 1)
{
/* 立即体验按钮(开始) */
UIButton *experienceNowButton = [UIButton buttonWithType:UIButtonTypeCustom];
experienceNowButton.center = CGPointMake(size.width *0.5, size.height *0.85);
experienceNowButton.bounds = (CGRect){CGPointZero,CGSizeMake(100, 35)};
[experienceNowButton setTitle:@"立即体验" forState:UIControlStateNormal];
experienceNowButton.layer.cornerRadius = 3;
[experienceNowButton setBackgroundColor:COLOR_RED1];
[experienceNowButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[experienceNowButton.titleLabel setFont:[UIFont systemFontOfSize:(IS_IPHONE6_6PLS ? 18 : 16) weight:15]];
[experienceNowButton addTarget:self action:@selector(experienceNowButtonClick) forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:experienceNowButton];
}
}
}
#pragma mark 添加分页指示器UIPageControl
- (void)addPageControl
{
CGSize size = self.view.frame.size;
UIPageControl *page = [[UIPageControl alloc]init]; // 实例化UIPageControl
page.center = CGPointMake(size.width * 0.5, size.height * 0.95); // 设置page位置
page.numberOfPages = KCount; // page的页数
page.currentPageIndicatorTintColor = COLOR_RED1; // 当前选中的page颜色
page.pageIndicatorTintColor = [UIColor lightGrayColor]; // 没有选中的page颜色
page.bounds = CGRectMake(0, 0, 150, 0); // page的大小
[self.view addSubview:page]; // 将page添加到视图中去
_page = page;
}
#pragma mark -监听按钮点击
#pragma mark 开始
- (void)experienceNowButtonClick
{
/*
* 值得注意的一点:
* 在显示控制器view之前显示状态栏:控制器view是460
* 在显示控制器view之后显示状态栏:控制器view是480
* 通过以上可以得出一个结论:
* 控制器的view是延迟加载的(懒加载),也就是说是需要显示或者是用到的时候才会加载的
*/
/* 从新特性跳到主界面 需要先将状态栏弄出来 */
[UIApplication sharedApplication].statusBarHidden = NO;
/* 将根控制器指向主界面,这样销毁了新特性界面,释放内存 */
self.view.window.rootViewController = [[ViewController alloc]init];
}
#pragma mark -滚动代理的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
/* 当前页数 */
_page.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;
}
在AppDelegate中找到如下方法,添加如下代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
if ([self isFirstUseNewVersion])
{
self.window.rootViewController = [[NewFeatureViewController alloc] init];
}
else
{
_globalVariables.mlNavigationController = [[MLNavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = _globalVariables.mlNavigationController;
}
当然、里面用到了这个方法,这个是我们自己添加判断版本号的代码#pragma mark - 判断是否是第一次使用当前版本
- (BOOL) isFirstUseNewVersion
{
NSString *key = (NSString *)kCFBundleVersionKey;
/* 1.从info.plist中取出版本号 */
NSString *version = [NSBundle mainBundle].infoDictionary[key];
/* 2.从沙盒中取出上次存储的版本号 */
NSString *saveVersion = [[NSUserDefaults standardUserDefaults] objectForKey:key];
/* 3.比较两个版本号是否相同 */
/* 不是第一次使用这个版本 */
if ([version isEqualToString:saveVersion])
return NO;
/* 版本号不一样:第一次使用这个版本 */
else
{
/* 将新版本号写入沙盒 */
[[NSUserDefaults standardUserDefaults] setObject:version forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
return YES;
}
}