iOS开发基础框架

---恢复内容开始---

//appdelegate

//
//  AppDelegate.m
//  iOS开发架构
//
//  Copyright © 2016年 Chason. All rights reserved.
//

#import "AppDelegate.h"
#import "ViewController.h"
#import "CYCTabBarViewController.h"
@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    //第一次启动程序时开启项目引导图

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
        //如果是第一次启动的话, 使用用户引导图作为根视图
        ViewController *firstVC = [[ViewController alloc] init];
        self.window.rootViewController = firstVC;
    }else{
        //否则, 直接进入APP主界面
        CYCTabBarViewController *dkTabBar = [[CYCTabBarViewController alloc] init];
        self.window.rootViewController = dkTabBar;
    }

return YES;
}
//设置APP启动图

- (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

//viewController

//
//  ViewController.m
//  iOS开发架构
//
//  Copyright © 2016年 Chason. All rights reserved.
//

#import "ViewController.h"
#import "CYCTabBarViewController.h"
//手机屏幕的宽和高
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define KScreenHeight [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UIScrollViewDelegate>
@property (nonatomic, retain) UIPageControl *page;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //添加app引导图
    self.navigationController.navigationBarHidden = YES;
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, KScreenHeight)];
    scrollView.contentSize = CGSizeMake(5 *kScreenWidth, KScreenHeight);
    scrollView.pagingEnabled = YES;
    scrollView.bounces = NO;
    scrollView.delegate = self;
    scrollView.contentOffset = CGPointMake(0, 0);
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, KScreenHeight)];
    [imageView setImage:[UIImage imageNamed:@"lead1.jpg"]];
    [scrollView addSubview:imageView];
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(kScreenWidth, 0, kScreenWidth, KScreenHeight)];
    [imageView1 setImage:[UIImage imageNamed:@"lead2.jpg"]];
    [scrollView addSubview:imageView1];
    UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(2 * kScreenWidth, 0, kScreenWidth, KScreenHeight)];
    [imageView2 setImage:[UIImage imageNamed:@"lead3.jpg"]];
    [scrollView addSubview:imageView2];
    UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:CGRectMake(3 * kScreenWidth, 0, kScreenWidth, KScreenHeight)];
    [imageView3 setImage:[UIImage imageNamed:@"lead4.jpg"]];
    [scrollView addSubview:imageView3];
    UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:CGRectMake(4 * kScreenWidth, 0, kScreenWidth, KScreenHeight)];
    [imageView4 setImage:[UIImage imageNamed:@"lead5.jpg"]];
    imageView4.userInteractionEnabled = YES;
    [scrollView addSubview:imageView4];
    
    //添加体验按钮
    UIImageView *imageBtn = [[UIImageView alloc] initWithFrame:CGRectMake(kScreenWidth / 2 - 75, KScreenHeight - 120, 150, 40)];
    imageBtn.image = [UIImage imageNamed:@"sign.png"];
    imageBtn.userInteractionEnabled = YES;
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap )];
    [imageBtn addGestureRecognizer:tap];
    [imageView4 addSubview:imageBtn];
    [self.view addSubview:scrollView];
    
    //设置翻页控件
    _page = [[UIPageControl alloc] initWithFrame:CGRectMake(0, KScreenHeight - 50, kScreenWidth, 40)];
    _page.numberOfPages = 5;//总页数
    _page.pageIndicatorTintColor = [UIColor lightGrayColor];//主题颜色
    _page.currentPageIndicatorTintColor = [UIColor whiteColor];//当前页的小球颜色
    [self.view addSubview:_page];//添加到self.view上面,因为如果添加到滚动视图上面的话 就会随着滚动从屏幕显示范围内离开。
}

//在滚动视图停止减速,也就是静止的方法内部,我们改变UIPageControl的currentPage
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //获取当前滚动视图的偏移量
    CGPoint offset = scrollView.contentOffset;
    
    //计算当前是第几页
    NSInteger page = offset.x / kScreenWidth;
    
    //给currentPage属性赋值
    _page.currentPage = page;
    
}

- (void)handleTap
{
    //进入程序主界面
    [self presentViewController:[[CYCTabBarViewController alloc] init] animated:NO completion:nil];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

//tabBar

//
//  CYCTabBarViewController.m
//  iOS开发架构
//
//  Copyright © 2016年 Chason. All rights reserved.
//

#import "CYCTabBarViewController.h"
#import "CYCNavigationController.h"
#import "AViewController.h"
#import "BViewController.h"
#import "CViewController.h"
#import "DViewController.h"
@interface CYCTabBarViewController ()

@end

@implementation CYCTabBarViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //创建四个导航试图控制器
    CYCNavigationController *ANaVC = [[CYCNavigationController alloc] initWithRootViewController:[[AViewController alloc] init]];
    ANaVC.tabBarItem.title = @"A";
    
    CYCNavigationController *BNaVC = [[CYCNavigationController alloc] initWithRootViewController:[[BViewController alloc] init]];
    BNaVC.tabBarItem.title = @"B";
    
    CYCNavigationController *CNaVC = [[CYCNavigationController alloc] initWithRootViewController:[[CViewController alloc] init]];
    CNaVC.tabBarItem.title = @"C";
    
    CYCNavigationController *DNaVC = [[CYCNavigationController alloc] initWithRootViewController:[[DViewController alloc] init]];
    DNaVC.tabBarItem.title = @"D";
    
    //将导航试图控制器添加到标签试图控制器上
    NSArray *controllerArray = [[NSArray alloc] initWithObjects:ANaVC, BNaVC, CNaVC, DNaVC, nil];
    self.viewControllers = controllerArray;
    self.tabBar.tintColor = [UIColor orangeColor];
    
    //设置tabbar图标(22x22/44x44)
    ANaVC.tabBarItem.image=[[UIImage imageNamed:@"tab_home_pre.png" ] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    ANaVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"tab_home.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    BNaVC.tabBarItem.image  = [[UIImage imageNamed:@"tab_invest_pre.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    BNaVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"tab_invest.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    CNaVC.tabBarItem.image  = [[UIImage imageNamed:@"tab_account_pre.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    CNaVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"tab_account.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    DNaVC.tabBarItem.image  = [[UIImage imageNamed:@"tab_more_pre.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    DNaVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"tab_more.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
//创建一个控制器

//
//  AViewController.m
//  iOS开发架构
//
//  Copyright © 2016年 Chason. All rights reserved.
//

#import "AViewController.h"
#import "LoginViewController.h"
@interface AViewController ()
@property (nonatomic, strong) UIButton *loginBtn;
@end

@implementation AViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"A";
}

//跳转到登录注册界面
- (void)pushToLoginAndRegistVC
{
    LoginViewController *loginVC = [[LoginViewController alloc] init];
    [self.navigationController pushViewController:loginVC animated:YES];
}

- (void)userOutLogin
{
    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@"loginName"];
    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@"loginPwd"];
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"登录|注册" style:UIBarButtonItemStylePlain target:self action:@selector(pushToLoginAndRegistVC)];
    self.navigationItem.rightBarButtonItem = rightItem;
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

-(void)viewWillAppear:(BOOL)animated
{
    //判断用户是否登录(本地存储免登陆)
    //根据用户登录状况添加/移除登录|注册按钮
    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"loginName"] isEqualToString:@""] || [[[NSUserDefaults standardUserDefaults] objectForKey:@"loginPwd"] isEqualToString:@""]) {
        UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"登录|注册" style:UIBarButtonItemStylePlain target:self action:@selector(pushToLoginAndRegistVC)];
        self.navigationItem.rightBarButtonItem = rightItem;
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    }else
    {
        //用户处于登录状态
        UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"退出" style:UIBarButtonItemStylePlain target:self action:@selector(userOutLogin)];
        self.navigationItem.rightBarButtonItem = rightItem;
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    }
}

@end

//登录控制器

//
//  LoginViewController.m
//
//  Copyright (c) 2015年 54贷客. All rights reserved.
//

#import "LoginViewController.h"
#import "myView.h"
//手机屏幕的宽和高
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define KScreenHeight [UIScreen mainScreen].bounds.size.height
@interface LoginViewController ()<UITextFieldDelegate>
@property (nonatomic,copy)UITextField * userNametextField;
@property (nonatomic,copy)UITextField * passwordtextField;
@end

@implementation LoginViewController

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor  whiteColor];
    self.navigationItem.title = @"登录";
    [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18], NSForegroundColorAttributeName:[UIColor blackColor]}];
    [self addLoginView];
    //添加退出键盘手势
    UITapGestureRecognizer *exitKeyBoard = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
    exitKeyBoard.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:exitKeyBoard];
    
}

- (void)viewTapped:(UITapGestureRecognizer*)tap1
{
    [self.view endEditing:YES];
}

-(void)addLoginView{
    NSArray *arr = @[@"账号",@"密码"];
    NSArray *imageArr = @[@"user",@"password"];
    for (int i = 0; i<2; i++) {
        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 94 + 40 * i, kScreenWidth - 20, 40)];
        label.layer.borderWidth = 0.4f;
        label.layer.cornerRadius = 10;
        [self.view addSubview:label];
        UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 12, 13, 16)];
        imageView.image = [[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",imageArr[i]]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        [label addSubview:imageView];
        label.userInteractionEnabled = YES;
        if (i==0) {
            _userNametextField = [[UITextField alloc]initWithFrame:CGRectMake(50, 00, kScreenWidth - 100, 40)];
            _userNametextField.clearButtonMode = UITextFieldViewModeWhileEditing;
            _userNametextField.delegate = self;
            _userNametextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
            _userNametextField.layer.cornerRadius = 10;
            _userNametextField.placeholder = arr[i];
            [label addSubview:_userNametextField];
        }else if(i==1){
            _passwordtextField = [[UITextField alloc]initWithFrame:CGRectMake(50, 00, kScreenWidth - 100, 40)];
            _passwordtextField.clearButtonMode = UITextFieldViewModeWhileEditing;
            _passwordtextField.delegate = self;
            _passwordtextField.layer.cornerRadius = 10;
            _passwordtextField.secureTextEntry = YES;
            _passwordtextField.placeholder = arr[i];
            [label addSubview:_passwordtextField];
        }
    }
    
    //忘记密码
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    [button setTitle:@"忘记密码?" forState:UIControlStateNormal];
    button.frame = CGRectMake(kScreenWidth - 100, 180, 80, 20);
    button.titleLabel.font = [UIFont systemFontOfSize:14];
    [button addTarget:self action:@selector(forgetPwdClick) forControlEvents:UIControlEventTouchUpInside];
    button.tintColor = [UIColor grayColor];
    [self.view addSubview:button];
    
    //登录 免费注册按钮
    UIButton *loginBtn = [myView creatButtonWithFrame:CGRectMake(10, 220, kScreenWidth-20, 40) title:@"登录" tag:10001 tintColor:[UIColor whiteColor] backgroundColor:[UIColor orangeColor]];
    [loginBtn addTarget:self action:@selector(clickLoginButton:) forControlEvents:UIControlEventTouchUpInside];
    loginBtn.layer.cornerRadius  = 20;
    [self.view addSubview:loginBtn];
    
    UIButton *registBtn = [myView creatButtonWithFrame:CGRectMake(10, 280, kScreenWidth-20, 40) title:@"注册" tag:10002 tintColor:[UIColor whiteColor] backgroundColor:[UIColor lightGrayColor]];
    [registBtn addTarget:self action:@selector(registerClick) forControlEvents:UIControlEventTouchUpInside];
    registBtn.layer.cornerRadius = 20;
    [self.view addSubview:registBtn];
}
-(void)forgetPwdClick{
    //跳转到忘记密码控制器
    NSLog(@"忘记密码啦!");
}
-(void)registerClick{
    //跳转到用户注册控制器
    NSLog(@"快来注册吧!");
}
-(void)clickLoginButton:(UITextField *)textField{
//登录成功
//本地持久化
[[NSUserDefaults standardUserDefaults] setObject:_userNametextField.text forKey:@"loginName"];
[[NSUserDefaults standardUserDefaults] setObject:_passwordtextField.text forKey:@"loginPwd"];
//登陆成功之后 隐藏输入框内容
[_passwordtextField resignFirstResponder];

[self popToRootVC];//登陆成功后返回
}

- (void)popToRootVC
{
    _userNametextField.text = @"";
    _passwordtextField.text = @"";
    [self.navigationController popToRootViewControllerAnimated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

//自定义一个view类

//
//  myView.h
//
//  Copyright (c) 2015年 54贷客. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface myView : NSObject
+(UIButton *)creatButtonWithFrame:(CGRect)frame title:(NSString *)title tag:(NSInteger)tag tintColor:(UIColor *)tintColor backgroundColor:(UIColor *)backgroundColor;
@end

//
//  myView.m
//
//  Copyright (c) 2015年 54贷客. All rights reserved.
//

#import "myView.h"

@implementation myView

+(UIButton *)creatButtonWithFrame:(CGRect)frame title:(NSString *)title tag:(NSInteger)tag tintColor:(UIColor *)tintColor backgroundColor:(UIColor *)backgroundColor{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:title forState:UIControlStateNormal];
    button.tag = tag;
    button.backgroundColor  = backgroundColor;
    button.tintColor=  tintColor;
    button.frame = frame;
    [button setTitleColor:tintColor forState:UIControlStateNormal];
    return button;
}
@end

---恢复内容结束---

时间: 2024-10-25 20:38:21

iOS开发基础框架的相关文章

iOS开发-基础框架

        Foundation框架为所有的应用程序提供基本系统服务 创建和管理集合,比如数组和字典 访问存储在应用程序里的图片和其它资源 创建和管理字符串 提交和接收通知 创建日期和时间对象 自动发现IP网络上的设备 操作URL流 执行异步代码 UIKit框架提供创建基于触摸用户界面的类 构建和管理你的用户界面 捕获触摸和基于移动的事件 呈现文字和web内容 优化你的多任务程序 创建定制的用户界面元素 Core Data框架管着理应用程序数据模型 在库里存储和接收对象 提供基本的undo/

iOS开发基础知识--碎片12

iOS开发基础知识--碎片12 1:Delegate运用 .h #import <UIKit/UIKit.h> @protocol FilterHeaderViewDelegate <NSObject> @required -(void)filterHeaderViewMoreBtnClicked:(id)sender; @end extern float CYLFilterHeaderViewHeigt; @interface FilterHeaderView : UIColle

iOS开发-基础面试题(一) 分类: 面试题

iOS开发-基础面试题(一) 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答:浅层复制:只复制指向对象的指针,而不复制引用对象本身.?深层复制:复制引用对象本身.?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们

iOS开发基础知识--碎片32

 iOS开发基础知识--碎片32 1:动画属性UIViewAnimationOptions说明 a:常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动. UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互. UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行. UIViewAnimat

iOS开发基础知识--碎片1

iOS开发基础知识--碎片1  一:NSString与NSInteger的互换 NSInteger转化NSString类型:[NSString stringWithFormat: @"%d", NSInteger]; NSString转化 NSInteger类型:NSInteger = [NSString intValue]; *其它几个同理 [NSString boolValue].[NSString floatValue].[NSString doubleValue] 二:Obje

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice

iOS开发基础知识--碎片2

iOS开发基础知识--碎片2 六:获得另一个控件器,并实现跳转 UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *registerViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"registerView

iOS开发基础-九宫格坐标(4)

对iOS开发基础-九宫格坐标(3)的代码进行进一步优化. 新建一个 UIView 的子类,并命名为 WJQAppView ,将 appxib.xib 中的 UIView 对象与新建的视图类进行关联.  WJQAppView 类中声明3个 IBOutlet 属性,与 appxib.xib 中的视图对象包含的 UIImageView . UILabel 和 UIButton 建立连接. WJQAppView 头文件代码如下所示: 1 //WJQAppView.h 2 @interface WJQAp

iOS开发基础-图片切换(2)

延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性:  @property (nonatomic, strong) NSArray *infoArray; //存放图片信息 通过 self.infoArray 的 getter 方法对其实现初始化(懒加载),其中代码中的 _infoArray 不能用 self.infoArray 替换: 1 //infoArray的get方法 2 - (NSArray *)infoArray