您的位置:首页 > 移动开发 > IOS开发

【iOS开发系列】版本新特性界面

2015-07-06 17:27 453 查看
首先我们需要创建一个版本新特性的控制器,继承自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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: