首页 > 系统 > iOS > 正文

iOS开发之路--微博新特性页面

2020-02-19 15:58:19
字体:
来源:转载
供稿:网友

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表