你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS開發項目篇―08新版本特性・SrollView

iOS開發項目篇―08新版本特性・SrollView

編輯:關於IOS

一、簡單說明

  展示新版本的特性:第一次使用一些應用軟件時,展示這個版本的軟件的新特性,一般在第一次啟動程序的時候顯示。   1.什麼情況下顯示版本新特性:   (1)第一次使用某個軟件時(X)   (2)第一次使用某個版本時,顯示版本新特性(V)   2.怎麼知道這個軟件的版本呢?   在plist文件裡,bundle version中顯示版本號。       3.如何顯示版本新特性?   應該在YYAppDelegate.m中進行判斷;   如果是第一次使用這個版本,那麼就顯示版本新特性(設置為window的根控制器),如果不是的話,那麼就顯示“首頁”的控制器。   新建一個控制器,使用UIScore來顯示新特性。   4.如何知道是第一次使用這個版本呢?   比較上次的使用情況。把每次使用的軟件的版本號存儲到沙盒中,當下一次打開軟件時,取出上一次保存的版本號,進行比較。       5.代碼示例:   YYAppDelegate.m文件中的處理代碼:   復制代碼  1 //  2 //  YYAppDelegate.m  3 //  4   5 #import "YYAppDelegate.h"  6 #import "YYTabBarViewController.h"  7 #import "YYNewfeatureViewController.h"  8   9 @implementation YYAppDelegate 10  11 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 12 { 13   14    //1.創建窗口 15     self.window=[[UIWindow alloc]init]; 16     self.window.frame=[UIScreen mainScreen].bounds; 17      18     //2.設置窗口的根控制器 19     //如何知道是否是第一次使用這個版本?可以通過比較上次使用的版本進行判斷 20     NSString *versionKey=@"CFBundleVersion"; 21     versionKey=(__bridge NSString *)kCFBundleVersionKey; 22      23     //從沙盒中取出上次存儲的軟件版本號(取出用戶上次的使用記錄) 24     NSUserDefaults *defaults=[[NSUserDefaults alloc]init]; 25     NSString *lastVersion=[defaults objectForKey:versionKey]; 26      27     //獲得當前打開軟件的版本號 28     NSString *currentVersion=[NSBundle mainBundle].infoDictionary[versionKey]; 29     if ([currentVersion isEqualToString:lastVersion]) {//當前版本號==上次使用的版本號 30            self.window.rootViewController=[[YYTabBarViewController alloc]init]; 31 //         self.window.rootViewController=[[YYNewfeatureViewController alloc]init]; 32     }else{//當前版本號!=上次使用的版本號:顯示新版本的特性 33            self.window.rootViewController=[[YYNewfeatureViewController alloc]init]; 34         //存儲這個使用的軟件版本 35         [defaults setObject:currentVersion forKey:versionKey]; 36         //立刻寫入 37         [defaults synchronize]; 38     } 39      40     //3.顯示窗口(主窗口) 41     [self.window makeKeyAndVisible]; 42     return YES; 43 } 復制代碼 代碼說明:   (1)比較大小,不能轉浮點數,其實只要比較字符串不一樣就是新的了。   (2)bundle version在Xcode中的真實類型為CFbundeVersion。   (3)Foundation和core foundation的數據類型是可以相互轉換的,在兩個框架之間比較安全的轉換是橋接轉換。   復制代碼 1 NSString *text = @"啊哈哈哈哈"; 2  3 CFStringRef str = (__bridge CFStringRef)text; 4  5 NSString/NSArray/NSDictionary : Foundaiton 6  7 CFStringRef/CFArrayRef/CFDictionaryRef :  Core Foundation 8  9 // Foundation和Core Foundation的數據類型是可以相互轉換的,必須用__bridge關鍵字進行橋接轉換 復制代碼     二、新建一個展示新版本特性的控制器   1.導入圖片素材       2.新建一個控制器類        3.實現代碼   YYNewfeatureViewController.m文件   復制代碼   1 //   2 //  YYNewfeatureViewController.m   3 //   4    5 #import "YYNewfeatureViewController.h"   6 #define YYNewfeatureImageCount    4   7 @interface YYNewfeatureViewController ()<UIScrollViewDelegate>   8 @property(nonatomic,strong)UIPageControl *pageControl;   9   10 @end  11   12 @implementation YYNewfeatureViewController  13   14   15 - (void)viewDidLoad  16 {  17     [super viewDidLoad];  18     //1.添加UIScrollView  19     [self setupScrollView];  20     //2.添加pageControl  21     [self setupPageControl];  22 }  23 /**  24  *添加UIScrollVie  25  */  26 -(void)setupScrollView  27 {  28     //1.添加UIScrollVie  29     //創建  30     UIScrollView *scrollView=[[UIScrollView alloc]init];  31     //設置frame  32     scrollView.frame=self.view.bounds;  33     //設置代理  34     scrollView.delegate=self;  35     //添加到view  36     [self.view addSubview:scrollView];  37       38     //2.添加圖片  39     //設置每張圖片的寬高和scrollView的一致  40     CGFloat imageW=scrollView.width;  41     CGFloat imageH=scrollView.height;  42     //添加四張圖片  43     for (int i=0; i<YYNewfeatureImageCount; i++) {  44         //創建ImageView  45         UIImageView *imageView=[[UIImageView alloc]init];  46         NSString *name=[NSString stringWithFormat:@"new_feature_%d",i+1];  47 //        if ([UIScreen mainScreen].bounds.size.height==568.0) {  48 //            name=[name stringByAppendingString:@"-568h"];  49 //        }  50         if (FourInch) {//需要手動去加載4英寸對應的-568h@2x圖片  51             name=[name stringByAppendingString:@"-568h"];  52         }  53         imageView.image=[UIImage imageWithName:name];  54           55         //把ImageView添加到scrollView上  56         [scrollView addSubview:imageView];  57           58         //設置imageView的frame  59         imageView.y=0;  60         imageView.width=imageW;  61         imageView.height=imageH;  62         imageView.x=i*imageW;  63     }  64     //設置其他的屬性  65     //設置活動范圍  66     scrollView.contentSize=CGSizeMake(YYNewfeatureImageCount*imageW, 0);  67     //設置背景顏色  68     scrollView.backgroundColor=YYColor(246, 246, 246);  69     //隱藏水平滾動條  70     scrollView.showsHorizontalScrollIndicator=NO;  71 //    scrollView.pagingEnabled=YES;  72     //去除彈簧效果  73     scrollView.bounces=NO;  74 }  75   76 /**  77  *2.添加pageControl  78  */  79 -(void)setupPageControl  80 {  81     UIPageControl *pageControl=[[UIPageControl alloc]init];  82     //設置一共有幾頁  83     pageControl.numberOfPages=YYNewfeatureImageCount;  84     //設置顯示的位置  85     pageControl.centerX=self.view.width*0.5;  86     pageControl.centerY=self.view.height-30;  87     //把pageControl添加到view上  88     [self.view addSubview:pageControl];  89       90     //設置圓點的顏色  91     //當前頁的圓點的顏色  92     pageControl.currentPageIndicatorTintColor=YYColor(253, 98, 42);  93     //其它葉的圓點的顏色  94     pageControl.pageIndicatorTintColor=YYColor(189, 189, 189);  95     self.pageControl=pageControl;  96       97 }  98 #pragma mark-UIScrollViewDelegate  99 -(void)scrollViewDidScroll:(UIScrollView *)scrollView 100 { 101 //    YYLog(@"scrollViewDidScroll----%f",scrollView.contentOffset.x); 102     //拿到浮點數進行四捨五入 103     double doublePage=scrollView.contentOffset.x/scrollView.width; 104     int intPage=(int)(doublePage + 0.5); 105     //設置當前頁碼 106     self.pageControl.currentPage=intPage; 107  108 } 109 #pragma mark-隱藏狀態欄 110 -(BOOL)prefersStatusBarHidden 111 { 112     return YES; 113 } 114 @end 復制代碼 4.實現細節   (1)設置活動范圍 scrollView.contentSize=CGSizeMake(YYNewfeatureImageCount*imageW, 0);   (2)設置背景顏色 scrollView.backgroundColor=YYColor(246, 246, 246);   (3)隱藏水平滾動條 scrollView.showsHorizontalScrollIndicator=NO;   (4)去除彈簧效果scrollView.bounces=NO;   (5)補充:在pch文件中得宏定義   復制代碼  1 //  2 //  Prefix header  3 //  4 //  The contents of this file are implicitly included at the beginning of every source file.  5 //  6   7 #import <Availability.h>  8   9 #ifndef __IPHONE_5_0 10 #warning "This project uses features only available in iOS SDK 5.0 and later." 11 #endif 12  13 #ifdef __OBJC__ 14     #import <UIKit/UIKit.h> 15     #import <Foundation/Foundation.h> 16     #import "UIImage+Extension.h" 17     #import "UIBarButtonItem+Extension.h" 18     #import "UIView+Extension.h" 19  20 #ifdef DEBUG // 調試狀態, 打開LOG功能 21 #define YYLog(...) NSLog(__VA_ARGS__) 22 #else // 發布狀態, 關閉LOG功能 23 #define YYLog(...) 24 #endif 25  26 // 顏色 27 #define YYColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] 28  29 // 隨機色 30 #define YYRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0] 31  32 // 是否為iOS7 33 #define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) 34  35 //是否為4英寸 36 #define FourInch ([UIScreen mainScreen].bounds.size.height==568.0) 37 #endif
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved