上节回顾
上篇讲了UILabel的使用,涉及到的都是一些基本属性,有些属性没有讲到,有需要的可以参考开发者文档。
本节内容
- UIButton的使用
- UITextField的使用
- 使用UILabel,UIButton,UITextField创建一个简单登陆界面
UIButton的使用
在昨天创建的项目中,我们先把UILabel给注释掉。注释的快捷操作是选中需要注释的代码,使用command+/即可。如果想把注释掉的内容恢复,再重复一次即可。
在viewcontroller.m文件的代码如下
首先我们实例化一个按钮
//实例化一个button
UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(50, 200, 100, 20)];
接下来设置按钮的一些属性
//设置按钮标题及对应状态
[btn1 setTitle:@"按钮" forState:UIControlStateNormal];
[btn1 setTitle:@"已点击" forState:UIControlStateHighlighted];
//设置标题颜色
[btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
//设置按钮的背景颜色
btn1.backgroundColor = [UIColor orangeColor];
其中按钮的状态有如下几种
UIControlStateNormal = 0, //常态
UIControlStateHighlighted = 1 << 0, // used when UIControl isHighlighted is set 高亮
UIControlStateDisabled = 1 << 1, //禁用
UIControlStateSelected = 1 << 2, // flag usable by app (see below) 选中
UIControlStateApplication = 0x00FF0000, // additional flags available for application use 当应用程序标志使用时
UIControlStateReserved = 0xFF000000 // flags reserved for internal framework use 为内部框架预留的
为按钮添加事件
[btn1 addTarget:self action:@selector(show) forControlEvents:UIControlEventTouchUpInside];
//方法名
-(void)show
{
UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(50, 225, 100, 20)];
lab.textColor = [UIColor greenColor];
lab.textAlignment = NSTextAlignmentRight;
lab.font = [UIFont systemFontOfSize:20];
lab.backgroundColor = [UIColor redColor];
lab.text =@"helloworld";
[self.view addSubview:lab];
}
按钮事件的触发情况又如下几种
UIControlEventTouchDown = 1 << 0, // on all touch downs
UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap count > 1)
UIControlEventTouchDragInside = 1 << 2,
UIControlEventTouchDragOutside = 1 << 3,
UIControlEventTouchDragEnter = 1 << 4,
UIControlEventTouchDragExit = 1 << 5,
UIControlEventTouchUpInside = 1 << 6,
UIControlEventTouchUpOutside = 1 << 7,
UIControlEventTouchCancel = 1 << 8,
UIControlEventValueChanged = 1 << 12, // sliders, etc.
UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13, // semantic action: for buttons, etc.
UIControlEventEditingDidBegin = 1 << 16, // UITextField
UIControlEventEditingChanged = 1 << 17,
UIControlEventEditingDidEnd = 1 << 18,
UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing
UIControlEventAllTouchEvents = 0x00000FFF, // for touch events
UIControlEventAllEditingEvents = 0x000F0000, // for UITextField
UIControlEventApplicationReserved = 0x0F000000, // range available for application use
UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use
UIControlEventAllEvents = 0xFFFFFFFF
接着我们将按钮添加到我们的视图中
//将按钮添加到视图中
[self.view addSubview:btn1];
运行结果如下
UITextField的使用
仿照UIButton,首先创建一个实例化对象
UITextField *tf = [[UITextField alloc]initWithFrame:CGRectMake(50, 255, 200, 40)];
接着设置一些属性
//设置底层标题
tf.placeholder = @"请输入内容";
//设置边框
tf.borderStyle = UITextBorderStyleRoundedRect;
//设置背景颜色
tf.backgroundColor = [UIColor whiteColor];
将文本框添加到视图上
//添加到视图
[self.view addSubview:tf];
结果:
登录界面创建
登录界面在一个应用当中是个静态界面,因此我们采用xib+代码的形式来创建这个界面,并且在创建是讲解一下AutoLayout(自动布局)。
大家在接下来的代码中,只需要关注UILabel,UIButton,UITextField,三个控件的状态即可。为了方便理解,我将以上创建控件全部注释掉。
自动布局操作:
viewcontroller.m代码
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *load;
@property (weak, nonatomic) IBOutlet UITextField *name;
@property (weak, nonatomic) IBOutlet UITextField *code;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置圆角
_load.layer.cornerRadius = 5;
_load.layer.masksToBounds = YES;
[_load addTarget:self action:@selector(load1) forControlEvents:UIControlEventTouchUpInside];
}
-(void)load1
{
NSString *str = [[NSString alloc]initWithString:_name.text];
NSString *str1 =[[NSString alloc]initWithString:_code.text];
//规定用户名长度为13位,密码长度为9位
if (str.length != 13 && str1.length != 9) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"账号或密码错误" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:cancel];
[alert addAction:ok];
[self presentViewController:alert animated:YES completion:nil];
}else
{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"登录成功" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:ok];
[self presentViewController:alert animated:YES completion:nil];
}
}
@end
运行结果
总结
今天讲了两个控件,以及三个控件的组合使用,总的来说这三个控件在今后的学习中会很重要。它们的一些属性,我这里有总结不全的可以去开发者文档找找。
下篇预告
UIView,UIViewController的使用。有时间会讲解一下UIImage与UIImageView的使用。关于OS X的开发,等着把iOS中的控件讲完,再做打算。