#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//--------------------------------------------------------------------------
//初始化根视图控制器
RootViewController *rootViewController = [[RootViewController alloc]init];
//设置为window的根视图控制器
self.window.rootViewController = rootViewController;
//--------------------------------------------------------------------------
/*
模拟系统中window的 rootViewController 属性的setter方法
-(void)setRootViewController:(RootViewController *)viewController{
if(_rootViewController != viewController){
[_rootViewController release];
_rootViewController = [viewController retain];
//self代表的就是window
[self addSubview: viewController.view];
}
}
*/
#import "RootViewController.h"
#import "LTView.h"
#import "registerViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
//点击注册按钮的方法//跳转到注册的视图控制器 这种跳转方式成为模态
-(void)createLoginViewByLTView{
//首先创建用户名和密码输入的控件
//得到整个屏幕的宽度
float screenWidth = CGRectGetWidth(self.view.frame);
//得到ltView的宽度 ltView整体居中
float ltVWidth = screenWidth-40*2;
//label显示内容的数组
NSArray *labelTextArray = [NSArray arrayWithObjects:@"用户名",@"密码", nil];
//输入框占位字符数组
NSArray *placeHolderArray = [NSArray arrayWithObjects:@"请输入用户名",@"输入密码", nil];
for (int i = 0 ; i<2; i++) {
LTView *ltView = [[LTView alloc]initWithFrame:CGRectMake(40, 100+i*(40+20), ltVWidth, 40)];
ltView.leftLabel.text = labelTextArray[i];
ltView.rightTextField.placeholder = placeHolderArray[i];
[self.view addSubview:ltView];
}
}
-(void)createButton{
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeSystem];
[registerButton setTitle:@"注册" forState:UIControlStateNormal];
registerButton.frame = CGRectMake(80, 300, 100, 50);
[registerButton addTarget:self action:@selector(registerAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:registerButton];
}
-(void)registerAction:(UIButton *)sender{
//初始化注册的视图控制器
registerViewController *registerVC = [[registerViewController alloc]init];
//模态跳转
//viewController:将要出现的视图控制器(将要跳转过去的视图控制器)
//animated :跳转的过程是否需要动画,需要:YES 不需要:NO
//completion: block参数,目前可以理解为一个代码片段。这里这个参数的作用是,跳转完成之后,所要执行的操作,如果跳转完成不执行任何操作,可以直接将此参数赋值为 nil
[self presentViewController:registerVC animated:YES completion:^{
NSLog(@"我跳转完成了");
}];
}
- (void)viewDidLoad {
[super viewDidLoad];
//初始化一个label,添加到视图控制器自带的view上
// UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
// label.text = @"我在视图控制器中";
// [self.view addSubview:label];
[self createLoginViewByLTView];
[self createButton];
NSLog(@"%s --- 视图加载完毕!",__FUNCTION__);
}
//视图即将出现
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"%s --- 视图将要出现了!",__FUNCTION__);
}
//视图已经出现
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"%s --- 视图已经出现!",__FUNCTION__);
}
//视图即将消失
-(void)viewWillDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
NSLog(@"%s --- 视图将要消失",__FUNCTION__);
}
//视图已经消失
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
NSLog(@"%s --- 视图已经消失",__FUNCTION__);
}
//当前视图控制器被释放的时候,所执行的方法
-(void)dealloc{
//ARC下不需要写[super dealloc]; MRC下要写[super dealloc];
}
#import "registerViewController.h"
@interface registerViewController ()
@end
@implementation registerViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor cyanColor]];
//加一个"返回"按钮,作用为返回根视图控制器
UIButton *backButtun = [UIButton buttonWithType:UIButtonTypeSystem];
[backButtun setTitle:@"返回" forState:UIControlStateNormal];
[backButtun setFrame:CGRectMake(120, 150, 100, 100)];
[backButtun addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:backButtun];
}
//返回按钮的点击方法
-(void)backAction:(UIButton *)sender{
//返回上一个视图控制器
//animated:返回的时候是否需要动画
//completion:返回动作结束之后,如果还要进行其他操作,就实现此函数,不需要直接赋值nil
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"我是注册界面,我要消失了");
}];
}
#import "LTView.h"
@implementation LTView
//因为labrl和TextField要根据LTView的大小来布局,所以我们需要拿到LTView的frame,所以需要重写LTView的初始化方法。
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
//在初始化方法中,为LTView添加label 和 textField
//初始化label。并且添加到LTView。 label 和 textField的宽度比例大约为1:2
//得到整个屏幕宽度
float sumWidth = CGRectGetWidth(frame);
//得到label的宽度
float labelWidth = (sumWidth-20)/3;
_leftLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, labelWidth, CGRectGetHeight(frame))];
[self addSubview:_leftLabel];
//初始化textField 并添加到LTView
_rightTextField =[[UITextField alloc]initWithFrame:CGRectMake(labelWidth + 20, 0,labelWidth *2, CGRectGetHeight(frame))];
[self addSubview:_rightTextField];
}
return self;
}