【iOS开发系列】版本新特性界面
2015-07-06 17:27
453 查看
首先我们需要创建一个版本新特性的控制器,继承自UIViewController
在AppDelegate中找到如下方法,添加如下代码
@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; } }
相关文章推荐
- iOS 彻底学会使用delegate
- IOS tabbar 点击刷新页面
- iOS解决两个静态库的冲突 duplicate symbol
- iOS导出说明文档
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
- ios学习笔记:ios数据持久化
- ios子视图和父视图同时处理输入事件
- iOS 后台定位需要注意的两个问题
- ios学习笔记:利用sizeclass匹配不同设备
- iOS 处理方法中的可变参数
- iOS多线程入门之NSThread,NSOperation,GCD
- nagios 监控交换机端口
- iOS 各种手势集合
- iOS之富文本
- iOS 一个带动画的等待指示器
- iOS开发的经典博客和文章汇总
- iOS textfield限制长度,中文占2字符,英文占1字符
- iOS运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)
- [转载]ios 开发 icon图标设置
- 提交IOS应用更新时遇到的错误提示!ERROR ITMS-90186/90062