BeyondAppDelegate.m
//// BeyondAppDelegate.m// 20_帥哥no微博//// Created by beyond on 14-8-3.// Copyright (c) 2014年 com.beyond. All rights reserved.//#import "BeyondAppDelegate.h"#import "BeyondViewController.h"#import "NewFeatureViewController.h"#import "OauthViewController.h"#define kVersionCodeKey (NSString *)kCFBundleVersionKey@implementation BeyondAppDelegate// 應用最先執行的方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ // 1,創建窗口 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // 2,設置窗口的背景色 self.window.backgroundColor = [UIColor whiteColor]; // 3,調用自定義方法,判斷是不是第一次使用本版本的app,如果是第一次使用,則將窗口的根控制器設為了NewFeature控制器,否則 就直接讓主控制器成為了窗口的根控制器 [self versionCodeCheck]; // 4,讓窗口可見 [self.window makeKeyAndVisible]; return YES;}// 自定義方法,判斷是不是第一次使用本版本的app,如果是第一次使用,則將窗口的根控制器設為了NewFeature控制器,否則 就直接讓主控制器成為了窗口的根控制器- (void)versionCodeCheck{ // 1,使用用戶偏好,從沙盒中取出舊的版本號 NSString *oldVersionCode = [[NSUserDefaults standardUserDefaults] objectForKey:kVersionCodeKey]; NSString *currentVersionCode = [[[NSBundle mainBundle]infoDictionary] objectForKey:kVersionCodeKey]; // 根據版本號的比較結果 進入不同的控制器 //[self stepIntoViewController:currentVersionCode oldVersion:oldVersionCode]; //return; #warning block test -===============以下內容,和其中調用的方法,僅用于block調用測試 if ([currentVersionCode isEqualToString:oldVersionCode]) { //if(0){ [self enterBeyondVC]; } else { // 關鍵 ,并且保存版本號 [[NSUserDefaults standardUserDefaults]setObject:currentVersionCode forKey:kVersionCodeKey]; // 進入新特性控制器 NewFeatureViewController *newVC = [[NewFeatureViewController alloc]init]; newVC.startBlock = ^(BOOL isSelected){ log(@"%d",isSelected); [self enterBeyondVC]; }; self.window.rootViewController = newVC; }}#warning block test- (void) enterBeyondVC{ // 1,如果進行過Oauth授權,則直接進入主控制器,否則 進行Oauth授權控制器 if (1) { OauthViewController *oauthVC = [[OauthViewController alloc]init]; self.window.rootViewController = oauthVC; return; } // 進入主控制器 BeyondViewController *vc =[[BeyondViewController alloc]init]; self.window.rootViewController = vc;}- (void)stepIntoViewController:(NSString *)curVersion oldVersion:(NSString *)oldVersion{ // 比較新舊版本號 UIViewController *rootViewController = nil;#warning 測試新特性的view if ([curVersion isEqualToString:oldVersion]) { // if (0){ // 說明不是第一次運行,直接實例化主控制器,將主控制器設置為窗口的根控制器 // 進入主控制器(主界面之前 先把狀態欄,恢復) ios 7 無效 // [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade]; rootViewController = [[BeyondViewController alloc]init]; } else { // 說明是第一次運行,進入新特性控制器,將新特性控制器設置為窗口的根控制器,并且保存版本號 // 進入新特性控制器(新特性界面之前 先把狀態欄,隱藏) ios 7 無效 // [UIApplication sharedApplication].statusBarHidden = YES; // [[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; rootViewController = [[NewFeatureViewController alloc]init]; // 關鍵 ,并且保存版本號 [[NSUserDefaults standardUserDefaults]setObject:curVersion forKey:kVersionCodeKey]; } // 設置窗口的根控制器,為相應的控制器 self.window.rootViewController = rootViewController;}@end
NewFeatureViewController.h
//// NewFeatureViewController.h// 20_帥哥no微博//// Created by beyond on 14-8-3.// Copyright (c) 2014年 com.beyond. All rights reserved.// 只使用一次,版本新特性控制器,在第一次運行本版本時啟用#import@interface NewFeatureViewController : UIViewController// 定義一個block作為成員變量,點擊開始按鈕時,初始化主控制器,讓其成為窗口的根控制器// block用copy@property (nonatomic,copy) void(^startBlock)(BOOL isShare);@end
NewFeatureViewController.m
//// NewFeatureViewController.m// 20_帥哥no微博//// Created by beyond on 14-8-3.// Copyright (c) 2014年 com.beyond. All rights reserved.// 只使用一次,版本新特性控制器,在第一次運行本版本時啟用/* 寫在前面: 當一個控件不顯示 的時候,檢查下面三個屬性: 沒有寬度和高度 x y 坐標不正確 沒有添加到父控件中 當一個控制不能點擊的時候,檢查下面個屬性: 自己的userinteraction = no 父控件的userinteraction = no 控件本身已經超出了它所在的控制器范圍 pageController的高度不能更改,那么就可以置高度為0,其他控件同理 4,居中顯示 的標準步驟:先設置center,再設置bounds 5,切換按鈕圖片可以通過切換按鈕的狀態來完成 normal:普通 highlighted : 高亮(人為長按的時候) disabled :失效(通過代碼控制) selected : 選中 (通過代碼控制) */#import "NewFeatureViewController.h"#define kPicNum 4#warning viewSize 要改成kWinSize#define viewSize self.view.bounds.size@interface NewFeatureViewController (){ // 頁面指示控制器 UIPageControl *_pageControl; // 因為開啟按鈕的點擊事件中需要分享按鈕的選中狀態 UIButton *_shareBtn;}@end@implementation NewFeatureViewController- (BOOL)prefersStatusBarHidden{ // 在LoadView之前 還要先 NSLog(@"prefers bar hidden"); return YES; }- (void)loadView{ NSLog(@"load view"); // 新特性,讓imageView成為控制器的view,然后才再ImageView上面添加一層scrollView UIImageView *imgView = [[UIImageView alloc]init]; // 設置控制器view(即imgView)的尺寸為全屏 imgView.frame = [UIScreen mainScreen].bounds; NSLog(@"%@",NSStringFromCGRect(imgView.frame)); // 使用分類中的方法,如果是iphone5,加載 -568h的圖片 imgView.image = [UIImage fullScrennImageNamed:@"new_feature_background.png"]; // 讓控制器的view可以與用戶交互 imgView.userInteractionEnabled = YES; // 直接讓imgeView成為控制器的view self.view = imgView;}- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"view did load "); // 1,調用自定義方法,加載UIScrollView,并且批量添加UIImageView,每個ImageView中放一張圖片 [self addUIScrollView]; // 2,調用自定義方法,加載UIPageControl [self addUIPageControl];}// 自定義方法,加載UIScrollView,并且批量添加UIImageView,每個ImageView中放一張圖片- (void) addUIScrollView{ // 1.加載UIScrollView,并且批量添加UIImageView,每個ImageView中放一張圖片 UIScrollView *scrollView = [[UIScrollView alloc] init]; // 顯示的可視區域大小 scrollView.frame = self.view.bounds; // 水平滾動條 scrollView.showsHorizontalScrollIndicator = NO; // 按可視區域進行分頁 scrollView.pagingEnabled = YES; // 滾動的范圍 scrollView.contentSize = CGSizeMake(kPicNum * viewSize.width, 0); // 代理 可以監聽滾動的各類事件 scrollView.delegate = self; // 添加到self.view即ImageView [self.view addSubview:scrollView]; // 2,根據索引添加kPicNum張圖片排列而成的kPicNum個imageView到scrollView里面 for (int i = 0; i
|
新聞熱點
疑難解答