【iOS开发系列】版本新特性界面
来源:互联网 发布:枪林弹雨免费刷枪软件 编辑:程序博客网 时间:2024/04/30 14:58
首先我们需要创建一个版本新特性的控制器,继承自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; }}
0 0
- 【iOS开发系列】版本新特性界面
- iOS开发——新特性界面(UICollectionView)
- iOS应用新特性界面
- iOS开发:第一次打开App 时展示版本新特性
- iOS 开发APP时版本更新,版本新特性的设置
- iOS开发 Swift3新特性
- ios开发-------- Xcode9新特性
- iOS 新特性的设置版本配置
- iOS不同版本的新特性小结
- iOS新浪微博客户端开发(1)——新特性界面
- iOS新浪微博客户端开发(1)——新特性界面
- 献给初学iOS的小盆友们——微博app项目开发之五新特性界面
- iOS开发 - 第05篇 - 项目 - 03 - 版本新特性 & OAuth授权
- iOS开发~Objective-C新特性
- IOS开发中新特性的实现
- iOS新特性实现3DTouch开发
- 【IOS开发新技术】swift4.0 新特性
- iOS程序更新后新特性介绍界面的实现
- ubuntu apt
- Leetcode-Word Break II
- Java获取项目路径下的方法(全)
- leetcode-223 Rectangle Area
- 安装程序无法创建 DCOM 用户帐户以注册 \valec.exe
- 【iOS开发系列】版本新特性界面
- leetcode Contains Duplicate II 哈希表
- 均匀设计表的构造+考虑子目标偏好度的均匀设计
- ViewPager滑动和点击切换内容
- 二分查找求解equal_range区间
- python爬虫示例(1)---urlretrieve() 函数使用
- 2012年5月SAT香港真题解析
- GRE写作必备句型
- SQL Server 2012数据库附加分离