在开始之前我们先做好准备工作
创建一个工程,命名为StoryBoard1,现在我们先来分析一下这个工程。
我们先运行一下,发现在显示白色区域之前有一个storyboard文字界面显示,这个就是—-LaunchScreen.xib,这个大家先不用管,它和我们的应用程序编程无关。
和应用程序有关的-----Main stroyBoard
接下来我们详细来讲解Main stroyBoard
介绍 Main stroyBoard
在xcode5里面,他的大小和iphone一样的,xcode6就统一了,不管是ipad,iphone都是这么大。
xcode6以后增加了一个use size classes,它订制不同界面,这个很复杂,我们不让他选中,点击disablesize classs选项,他就缩小了,有点像我们普通的iphone大小。
注意它不是iphone6的大小,是iphone5s,需要iphone6大小,我们需要如下修改:
1.选中viewcontroller 图标
2.
3.4.7-inch就是iphone6的尺寸
storyboard 内容设置
现在我们要在storyboard里面增加内容,从控件库拖我们想要的控件。
快捷键:command + shift + h 退出模拟器
我们要做的效果如下:
操作如下:
1.拖label -> 双击可改文字 -> enter
注意:修改label的属性
修改label的文字有两种方式,
第一种:双击label,enter,label文本框会随着文字的大小进行缩放;
第二种:直接在text下面的输入框直接改名字,但是文本的输入框不会根据你的文字大小缩放,适用于不填写文字,只放框
课修改label的背景颜色
按照上面的方式依次拖动相应的视图到屏幕上。
UIView介绍
屏幕上能看的到得都是UIView(视图)
UIButton,UILable,UITextField都继承UIView.
每一个UIView都是一个容器,能容纳其他UIView .
父控件和子控件
白色全屏是一个UIView—-父控件
白色UIView中,有UIImageView,UIButton,UILable—子控件
UIViewController
管理全屏的UIView的创建与销毁,监听UIView中的事件
每一个新的界面都是一个新的UIView,在切换过程中,涉及到:
UIView的创建和销毁。
UIView跟用户的交互
新界面的创建过程:
- 创建UIViewController对象 – 全屏UIView—UIViewController管理这个UIView;
- 管理全屏的UIView的创建与销毁,监听UIView中的事件;
- UIViewController 内有个UIView属性,就是它负责管理UIView对象
- @property(nonatomic, strong) UIView *view;
storyBoard -UIViewController
点击第一个按钮
会看到对应的这个视图是哪个类:ViewController
现在我们可以在ViewController中写我们的方法进行交互了
按钮:
我们可以在viewcontroller中创建button对象,按住control,拖动鼠标左键;
写触发方法:返回值必须是IBAction才可以,否则无法连线。
先写- (IBAction)login:(id)sender;会看到空心圆圈,然后直接拖动改圈,到,界面上的登录按钮,就连线ok.
/**
* IBAction
1.相当于void
2.只有返回值类型声明IBAction方法才有资格与storyboard相连
*
/
注意:如果以前你连了线,后面又在button上面连线,它只会识别第一次连的,后面的无法识别,会发生崩溃,解决方法:右击:将以前的连线关掉(前面的差)。
ios5之后,我们的对象写在延展里,私有的。
UITextField:
/*
IBOutlet:他是一个标识符,标志这个属性可以与storyboard连线
*/
怎么让stroyboard的输入框和viewcontroller关联—-创建属性对象
选中控件,按住control,拖动到延展里面,就会自动生成如下代码
//控件都用weak
@property(nonatomic, weak) IBOutlet UITextField *userTextField;
@property(nonatomic, weak) IBOutlet UITextField *passwarldTextField;
//然后进行处理
- (void)login:(id)sender{
if ([self.UserTextField.text isEqualToString: @"admin" ] && [self.Passworld.text isEqualToString:@"123456"]) {
self.view.backgroundColor = [UIColor yellowColor];
NSLog(@"login sucess!");
}else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"用户名或密码错误" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
//回收键盘方法一:
// [self.UserTextField resignFirstResponder];
// [self.Passworld resignFirstResponder];
//回收键盘方法二:
[self.view endEditing:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
//回收键盘三:通过代理
self.UserTextField.delegate = self;
self.Passworld.delegate = self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
#pragma mark - <UITextFieldDelegate> methods
//按键盘上的return建回收键盘
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
//resignFirstResponder 撤销称为第一响应者
[textField resignFirstResponder];
return YES;
}