第一次新特性

判断是否是第一次打开该版本
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    application.statusBarHidden = NO;

    // 1.创建窗口
    self.window = [[UIWindow alloc] init];
    self.window.frame = [UIScreen mainScreen].bounds;

    // 2.设置窗口的根控制器
    // 如何知道第一次使用这个版本?比较上次的使用情况
    //NSString *versionKey = @"CFBundleVersion";
    NSString *versionKey = (__bridge NSString *)kCFBundleVersionKey;

    // 从沙盒中取出上次存储的软件版本号(取出用户上次的使用记录)
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *lastVersion = [defaults objectForKey:versionKey];

    // 获得当前打开软件的版本号
    NSString *currentVersion = [NSBundle mainBundle].infoDictionary[versionKey];

    if ([currentVersion isEqualToString:lastVersion]) { // 当前版本号 == 上次使用的版本:显示HMTabBarViewController
        self.window.rootViewController = [[SNTabBarViewController alloc] init];
    } else { // 当前版本号 != 上次使用的版本:显示版本新特性
        self.window.rootViewController = [[SNNewfeatureViewController alloc] init];

        // 存储这次使用的软件版本
        [defaults setObject:currentVersion forKey:versionKey];
        [defaults synchronize];
    }

    // 3.显示窗口(成为主窗口)
    [self.window makeKeyAndVisible];
    return YES;
}
现实新特性#define SNNewfeatureImageCount 4

#import "SNNewfeatureViewController.h"

@interface SNNewfeatureViewController () <UIScrollViewDelegate>

@property (nonatomic, weak)UIPageControl *pageControl;

@end

@implementation SNNewfeatureViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //1.添加UISrollView
    [self setupScrollView];

    //2.添加pageControl
    [self setupPageControl];

}

-(void)setupScrollView
{
    //1.添加UISrollView
    UIScrollView *scrollView = [[UIScrollView alloc]init];
    scrollView.frame = self.view.bounds;
    scrollView.delegate = self;
    [self.view addSubview:scrollView];

    //2.添加图片
    CGFloat imageW = scrollView.width;
    CGFloat imageH = scrollView.height;
    for (int i = 0; i<SNNewfeatureImageCount; i++) {
        //图片
        UIImageView *imageView = [[UIImageView alloc]init];
        NSString *name = [NSString stringWithFormat:@"new_feature_%d", i+1];
        if (FourInch) {
            name = [name stringByAppendingString:@"-568h"];
        }
        imageView.image = [UIImage imageNamed:name];
        [scrollView addSubview:imageView];

        //设置frame
        imageView.y = 0;
        imageView.width = imageW;
        imageView.height = imageH;
        imageView.x = i * imageW;

        //给最后一个imageView添加按钮

    }

    //3.设置其他属性
    //总长度
    scrollView.contentSize = CGSizeMake(imageW * SNNewfeatureImageCount, 0);
    //要么不切换,要么切换一屏
    scrollView.pagingEnabled = YES;
    //隐藏滚动条
    scrollView.showsHorizontalScrollIndicator = NO;
    //没有回弹效果
    //scrollView.bounces = NO;
    //回弹,背景色
    scrollView.backgroundColor = SNColor(246, 246, 246);
}

-(void)setupPageControl
{
    //1.添加
    UIPageControl *pageControl = [[UIPageControl alloc]init];
    pageControl.numberOfPages = SNNewfeatureImageCount;
    pageControl.centerX = self.view.width * 0.5;
    pageControl.centerY = self.view.height - 30;
    [self.view addSubview:pageControl];

    //2.设置圆点颜色
    pageControl.currentPageIndicatorTintColor = SNColor(253, 98, 42);
    pageControl.pageIndicatorTintColor = SNColor(189, 189, 189);
    self.pageControl = pageControl;
}

#pragma mark - UIScrollViewDelegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //获得页码
    CGFloat doublePage = scrollView.contentOffset.x / scrollView.width;
    int intPage = (int)(doublePage + 0.5);
    //设置页码
    self.pageControl.currentPage = intPage;
}
@end
时间: 2024-08-25 05:42:21

第一次新特性的相关文章

C99标准的新特性

C语言标准的发展 C语言的发展历史大致上分为4个阶段:Old Style C.C89.C99和C11. C89是最早的C语言规范,于1989年提出,1990年先由ANSI(美国国家标准委员会,American National Standards Institute)推出ANSI版本,后来被接纳为ISO国际标准(ISO/IEC9899:1990),因而有时也称为C90,最经典的C语言教材[K&R]就是基于这个版本的,C89是目前最广泛采用的C语言标准,大多数编译器都完全支持C89,C99(ISO

h5新特性

  CSDN博客 Gane_Cheng HTML5新特性浅谈 发表于2016/10/17 21:25:58  7809人阅读 分类: 前端 转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52819118 http://www.ganecheng.tech/blog/52819118.html (浏览效果更好) 2014年10月29日,W3C宣布,经过接近8年的艰苦努力,HTML5标准规范终于制定完成. HTML5将会取代

EntityFramework Core 1.1有哪些新特性呢?

前言 在项目中用到EntityFramework Core都是现学现用,及时发现问题及时测试,私下利用休闲时间也会去学习其他未曾遇到过或者用过的特性,本节我们来讲讲在EntityFramework Core 1.1中出现了哪些新特性供我们使用. EntityFramework Core 1.1新特性探讨 DbSet.Find 在EF 6.x中也有此方法的实现,在EF Core 1.1中也同样对此方法进行了实现,为什么要拿出来讲呢,当然也有其道理,我们一起来看看.在         public 

新特性页面

本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController. 头文件代码: 1 // 2 // JMNewfeatureViewController.h 3 // 4 5 #import <UIKit/UIKit.h> 6 7 typedef enum:NSInteger 8 {

mysql5.7新特性探究

一.MySql5.7增加的特性 1.MySql服务方面新特性 1) 初始化方式改变 MySql5.7之前版本初始化方式: scripts/mysql_install_db MySql5.7版本初始化方式: [[email protected] mysql_new]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql_new/ --datadir=/usr/local/mysql_new/data/ 2015-10-

CSS3 的一些新特性以及效果

深入了解 CSS3 新特性 来源: ibmdeveloperworks  发布时间: 2012-02-06 15:34  阅读: 5114 次  推荐: 3   原文链接   [收藏] 摘要:现如今,随着 Web2.0 技术的流行,之前的 CSS2 标准和相关技术似乎已经满足不了日益增长的开发需求:人们需要实现更加美观.用户体验更好的界面.CSS3,这个新一代的标准应运而生.为了满足现有的对于 Web UI 的开发需求,它提供了一系列强大的功能,如许多新的 CSS 属性(文字,布局,颜色等等),

简单了解JAVA8的新特性

JAVA8新特性会颠覆整个JAVA程序员的编程习惯 甚至如果您坚守JAVA7之前的编程习惯,今后你看比较年轻的程序员写的JAVA代码都会无法理解 所以为了保证不脱钩,我觉得有必要学习JAVA8的新特性,况且,这会极大得提高CPU效率和编码效率 我们来简单了解一下JAVA8的新特性 我觉得主要有两个比较重要的,一是Lambda表达式,二是集合类的stream操作 关于这两点,我写了几个小DEMO,附上注释,应该能够迅速掌握 如果大家好奇更多的JAVA8新特性,请自行阅读更加专业的知识,敏捷开发不求

iOS6、7、8、9新特性总汇和适配说明

转自:http://blog.6ag.cn/1195.html iOS6新特性 一.关于内存警告 ios6中废除了viewDidUnload,viewWillUnload这两个系统回调,收到内存警告时在didReceiveMemoryWarning中进行相关的处理. Crayon Syntax Highlighter v2.7.1 - (void)viewDidUnload { [super viewDidUnload]; // 处理 ios6 以下的系统内存警告系统回调消息 } // 这里处理

EntityFramework Core 1.1有哪些新特性呢?我们需要知道

前言 在项目中用到EntityFramework Core都是现学现用,及时发现问题及时测试,私下利用休闲时间也会去学习其他未曾遇到过或者用过的特性,本节我们来讲讲在EntityFramework Core 1.1中出现了哪些新特性供我们使用. EntityFramework Core 1.1新特性探讨 DbSet.Find 在EF 6.x中也有此方法的实现,在EF Core 1.1中也同样对此方法进行了实现,为什么要拿出来讲呢,当然也有其道理,我们一起来看看.在仓储中我们实现Find这个方法,