【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
原创粉丝点击