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

原创 2015年07月06日 17:27:08

首先我们需要创建一个版本新特性的控制器,继承自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;
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS开发——新特性界面(UICollectionView)

没一款app在刚下载或者更新之后,app有些特色功能需要向用户传递,这个时候我们就要使用新特新界面,用户刚打开软件能看到各种展示图片,左右滑动还可以切换图片,那么新特性界面是如何实现的呢,下面我就用介...

iOS开发 - 第05篇 - 项目 - 03 - 版本新特性 & OAuth授权

1、版本新特性2、控制器切换3、-568@2x图片的加载4、tabBar使用注意5、按钮的使用细节6、控件看不见的可能7、新版本判断8、OAuth授权...
  • NSRyan
  • NSRyan
  • 2016年08月10日 13:28
  • 540

[ios开发ios5新特性之]如何在iOS5中定制用户界面

iOS5中除了提供iCloud这个革命性的云服务之外,也增加了多达200个以上的新特性。让我们先来了解下iOS5中定制用户界面的妙用吧! 前言: 北京时间10月13日凌晨,期待...

iOS开发学习之UIScrollerView实现新特性

大家好。相信大家都对一些APP的新特性有所了解了。 一个好的新特性,会让用户得到不一样的体验,会让用户很清晰的了解该APP的新特性功能。 然后,请让小虾米来说说我所学习的内容吧 。 首先,图片1,图片...
  • ios_cjh
  • ios_cjh
  • 2015年08月31日 21:18
  • 485

[IOS开发]新控件,新特性 UICollectionView(2)

http://blog.sina.com.cn/s/blog_6d58b63101014z0i.html [IOS开发]新控件,新特性 UICollectionView(2) (201...

iOS开发实用技巧篇—项目新特性页面的处理

说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理。 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以...

IOS开发中新特性的实现

一、首先判断版本号高低,在info.plist中,有几个版本号, Bundle versions string, short (CFBundleShortVersionString): 这个表示rel...

iOS开发 Swift3新特性

苹果集成Swift 3到Xcode 8 Beta在WWDC将于今年晚些时候发布的最终版本.这是该语言的第一个版本,它是开源的,在Mac OS X和Linux上都能使用.如果你从去年十二月开始迅速的进化...

iOS开发~Objective-C新特性

概要 WWDC 2015 推出和开源 Swift 2.0,Swift作为全新的开发语言,有很多新特性。而Swift可以与混编,所以Objective-C也增加了一些新特性与Swift同步 (ransp...
  • zfpp25_
  • zfpp25_
  • 2015年08月09日 17:42
  • 3149

iOS新浪微博客户端开发(1)——新特性界面

看完了MJ老师的微博项目视频,准备自己动手写一下,记录开发中的一些感想。 1、首先判断是否第一次使用该版本,如果是,先跳转到新特性界面,否则,直接跳到主界面,代码: - (BOOL)applicati...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【iOS开发系列】版本新特性界面
举报原因:
原因补充:

(最多只允许输入30个字)