iOS 注册登录页面

注册或登录页面

如下图

1,这里为了展现UITextField的文本框关联键盘的设置,这里把“密码”和“确定密码”的关联键盘都设置为数字键盘,实际应用中密码一般都允许为数字或字母。
2,实现了键盘收回操作。
3,这里没有写对“用户名”进行特殊字符过滤的代码。


实现代码:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

   [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

//三个UILabel

UILabel *nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 60, 80, 37)];

nameLabel.font = [UIFont systemFontOfSize:15];

nameLabel.text = @"用 户 名:";

nameLabel.backgroundColor = [UIColor clearColor];

nameLabel.textAlignment = NSTextAlignmentLeft;

nameLabel.numberOfLines = 2;

//用于设置UILabel中文本的行数

[self.view addSubview:nameLabel];

[nameLabel release];

UILabel *newPasswordLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 60+40, 80, 37)];

newPasswordLabel.font = [UIFont systemFontOfSize:15];

newPasswordLabel.text = @"密 码:";

newPasswordLabel.backgroundColor = [UIColor clearColor];

newPasswordLabel.textAlignment = NSTextAlignmentLeft;

[self.view addSubview:newPasswordLabel];

[newPasswordLabel release];

UILabel *oncePasswordLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 60+40*2, 80, 37)];

oncePasswordLabel.font = [UIFont systemFontOfSize:15];

oncePasswordLabel.text = @"确认密码:";

oncePasswordLabel.backgroundColor = [UIColor clearColor];

oncePasswordLabel.textAlignment = NSTextAlignmentLeft;

[self.view addSubview:oncePasswordLabel];

[oncePasswordLabel release];

//三个输入框

UITextField *nameTextField = [[UITextField alloc]initWithFrame:CGRectMake(90, 60, 210, 30)];

nameTextField.placeholder = @"请输入用户名";

nameTextField.tag = 1;

[nameTextField setSecureTextEntry:NO];

nameTextField.font = [UIFont systemFontOfSize:14];

nameTextField.delegate = self;

nameTextField.backgroundColor = [UIColor clearColor];

nameTextField.borderStyle = UITextBorderStyleRoundedRect;

[self.view addSubview:nameTextField];

[nameTextField release];

UITextField *passwordTextField = [[UITextField alloc]initWithFrame:CGRectMake(90, 60+40, 210, 30)];

passwordTextField.placeholder = @"至少6位数字";

passwordTextField.tag = 2;

[passwordTextField setSecureTextEntry:YES];

passwordTextField.font = [UIFont systemFontOfSize:14];

passwordTextField.delegate = self;

passwordTextField.backgroundColor = [UIColor clearColor];

passwordTextField.borderStyle = UITextBorderStyleRoundedRect;

passwordTextField.keyboardType = UIKeyboardTypeNumberPad;

[self.view addSubview:passwordTextField];

[passwordTextField release];

UITextField *onceNewPasswordTextField = [[UITextField alloc]initWithFrame:CGRectMake(90, 60+40*2, 210, 30)];

onceNewPasswordTextField.placeholder = @"请再次输入密码";

onceNewPasswordTextField.tag = 3;

onceNewPasswordTextField.font = [UIFont systemFontOfSize:14];

[onceNewPasswordTextField setSecureTextEntry:YES];

onceNewPasswordTextField.delegate = self;

onceNewPasswordTextField.backgroundColor = [UIColor clearColor];

onceNewPasswordTextField.borderStyle = UITextBorderStyleRoundedRect;

onceNewPasswordTextField.keyboardType = UIKeyboardTypeNumberPad;

[self.view addSubview:onceNewPasswordTextField];

[onceNewPasswordTextField release];

UIButton *confirmButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

confirmButton.frame = CGRectMake(110, 60+40*3+20, 100, 37);

[confirmButton setTitle:@"确定" forState:UIControlStateNormal];

//正常状况下button显示的标题

[confirmButton setTitle:@"确定" forState:UIControlStateHighlighted];

//高亮显示时button的标题

confirmButton.backgroundColor = [UIColor redColor];

[confirmButton addTarget:self action:@selector(confirm:) forControlEvents:UIControlEventTouchUpInside];

//button被按下又抬起后发生的事件

//@selector可以理解为"选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个confirmButton

[self.view addSubview:confirmButton];

}

//收回键盘

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

for (int i = 0; i<4; i++)

{

UITextField *textField = (UITextField*)[self.view viewWithTag:1+i];

[textField resignFirstResponder];

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

} @end

UILabel

UILabel继承了UIView,它可以设置UIView所支持的属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];  //设置Label的位置和大小
//设置显示文字
label1.text = @"用户名";
//设置字体:粗体,正常的是 SystemFontOfSize
label1.font = [UIFont boldSystemFontOfSize:20];
//设置文字颜色
label1.textColor = [UIColor orangeColor];
//设置文字位置
label1.textAlignment = UITextAlignmentRight;
label2.textAlignment = UITextAlignmentCenter;
//设置字体大小适应label宽度
label4.adjustsFontSizeToFitWidth = YES;
//设置label的行数
label5.numberOfLines = 2;
UIlabel.backgroudColor=[UIColor clearColor]; //可以去掉背景色
 
//设置高亮
label6.highlighted = YES;
label6.highlightedTextColor = [UIColor orangeColor];
//设置阴影
label7.shadowColor = [UIColor redColor];
label7.shadowOffset = CGSizeMake(1.0,1.0);
//设置是否能与用户进行交互
label7.userInteractionEnabled = YES;
//设置label中的文字是否可变,默认值是YES
label3.enabled = NO;
//设置文字过长时的显示格式
label3.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间
//  typedef enum {
//      UILineBreakModeWordWrap = 0,
//      UILineBreakModeCharacterWrap,
//      UILineBreakModeClip,//截去多余部分
//      UILineBreakModeHeadTruncation,//截去头部
//      UILineBreakModeTailTruncation,//截去尾部
//      UILineBreakModeMiddleTruncation,//截去中间
//  } UILineBreakMode;
 
//如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为
label4.baselineAdjustment = UIBaselineAdjustmentNone;
//  typedef enum {
//      UIBaselineAdjustmentAlignBaselines,
//      UIBaselineAdjustmentAlignCenters,
//      UIBaselineAdjustmentNone,
//  } UIBaselineAdjustment;


有时需要设置UILabel中文本的行数,其属性值默认为1,用于设置该UILabel只能显示一行文本。

1
oldPasswordLabel.numberOfLines = 2;


UITextField

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//初始化textfield并设置位置及大小
UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
 
//当输入框没有内容时,水印提示 ,提示内容为“用户名”
//显示灰色字体,作为提示信息
text.placeholder = @"用户名";
 
//设置边框样式,只有设置了才会显示边框样式
text.borderStyle = UITextBorderStyleRoundedRect;
typedef enum {
    UITextBorderStyleNone,
    UITextBorderStyleLine,
    UITextBorderStyleBezel,
    UITextBorderStyleRoundedRect
} UITextBorderStyle;
 
//设置键盘的样式
text.keyboardType = UIKeyboardTypeNumberPad;
typedef enum {
    UIKeyboardTypeDefault,                 //默认键盘,支持所有字符
    UIKeyboardTypeASCIICapable,            //支持ASCII的默认键盘
    UIKeyboardTypeNumbersAndPunctuation,   //标准电话键盘,支持+*#字符
    UIKeyboardTypeURL,                      //URL键盘,支持.com按钮 只支持URL字符
    UIKeyboardTypeNumberPad,               //数字键盘
    UIKeyboardTypePhonePad,               //电话键盘
    UIKeyboardTypeNamePhonePad,            //电话键盘,也支持输入人名
    UIKeyboardTypeEmailAddress,            //用于输入电子 邮件地址的键盘
    UIKeyboardTypeDecimalPad,              //数字键盘 有数字和小数点
    UIKeyboardTypeTwitter,                 //优化的键盘,方便输入@、#字符
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;
 
//每输入一个字符就变成点 用语密码输入
text.secureTextEntry = YES;
 
//设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉
text.backgroundColor = [UIColor whiteColor];
 
//设置背景图片
text.background = [UIImage imageNamed:@"dd.png"];
 
//设置背景
text.disabledBackground = [UIImage imageNamed:@"cc.png"];
 
 
//设置输入框内容的字体样式和大小
text.font = [UIFont fontWithName:@"Arial" size:20.0f];
 
//设置字体颜色
text.textColor = [UIColor redColor];
 
//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
text.clearButtonMode = UITextFieldViewModeAlways;
typedef enum {
    UITextFieldViewModeNever,           //从不出现
    UITextFieldViewModeWhileEditing,     //编辑时出现
    UITextFieldViewModeUnlessEditing,   //除了编辑外都出现
    UITextFieldViewModeAlways           //一直出现
} UITextFieldViewMode;
 
//输入框中一开始就有的文字
text.text = @"一开始就在输入框的文字";
 
//是否纠错
text.autocorrectionType = UITextAutocorrectionTypeNo;
typedef enum {
    UITextAutocorrectionTypeDefault,    //默认
    UITextAutocorrectionTypeNo,        //不自动纠错
    UITextAutocorrectionTypeYes,       //自动纠错
} UITextAutocorrectionType;
 
//再次编辑就清空
text.clearsOnBeginEditing = YES;
 
//内容对齐方式
text.textAlignment = UITextAlignmentLeft;
 
//内容的垂直对齐方式  UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
 
//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
textFied.adjustsFontSizeToFitWidth = YES;
 
//设置自动缩小显示的最小字体大小
text.minimumFontSize = 20;
 
//首字母是否大写
text.autocapitalizationType = UITextAutocapitalizationTypeNone;
 
typedef enum {
    UITextAutocapitalizationTypeNone, 不自动大写
    UITextAutocapitalizationTypeWords, 单词首字母大写
    UITextAutocapitalizationTypeSentences, 句子的首字母大写
    UITextAutocapitalizationTypeAllCharacters, 所有字母都大写
} UITextAutocapitalizationType;
 
//return键变成什么键
text.returnKeyType =UIReturnKeyDone;
 
typedef enum {
    UIReturnKeyDefault,          //默认 灰色按钮,标有Return
    UIReturnKeyGo,               //标有Go的蓝色按钮
    UIReturnKeyGoogle,            //标有Google的蓝色按钮,用语搜索
    UIReturnKeyJoin,              //标有Join的蓝色按钮
    UIReturnKeyNext,              //标有Next的蓝色按钮
    UIReturnKeyRoute,             //标有Route的蓝色按钮
    UIReturnKeySearch,            //标有Search的蓝色按钮
    UIReturnKeySend,              //标有Send的蓝色按钮
    UIReturnKeyYahoo,             //标有Yahoo的蓝色按钮
    UIReturnKeyYahoo,             //标有Yahoo的蓝色按钮
    UIReturnKeyEmergencyCall,     //紧急呼叫按钮
} UIReturnKeyType;
 
//键盘外观
textView.keyboardAppearance=UIKeyboardAppearanceDefault;
typedef enum {
    UIKeyboardAppearanceDefault,   //默认外观,浅灰色
    UIKeyboardAppearanceAlert,   //深灰 石墨色
     
} UIReturnKeyType;
 
 
//设置代理 用于实现协议
text.delegate = self;
 
//把textfield加到视图中
[self.window addSubview:text];
 
//最右侧加图片是以下代码  左侧类似
UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
text.rightView=image;
text.rightViewMode = UITextFieldViewModeAlways;
typedef enum {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
} UITextFieldViewMode;


在处理密码等隐私类的信息时,可能需要将输入的信息隐藏一下。

1
2
//每输入一个字符就变成点 ,用语密码输入
[passwordTextField setSecureTextEntry:YES];


也可以设置文本框关联的键盘,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//设置键盘的样式
text.keyboardType = UIKeyboardTypeNumberPad;
typedef enum {
    UIKeyboardTypeDefault,                 //默认键盘,支持所有字符
    UIKeyboardTypeASCIICapable,            //支持ASCII的默认键盘
    UIKeyboardTypeNumbersAndPunctuation,   //标准电话键盘,支持+*#字符
    UIKeyboardTypeURL,                      //URL键盘,支持.com按钮 只支持URL字符
    UIKeyboardTypeNumberPad,               //数字键盘
    UIKeyboardTypePhonePad,               //电话键盘
    UIKeyboardTypeNamePhonePad,            //电话键盘,也支持输入人名
    UIKeyboardTypeEmailAddress,            //用于输入电子 邮件地址的键盘
    UIKeyboardTypeDecimalPad,              //数字键盘 有数字和小数点
    UIKeyboardTypeTwitter,                 //优化的键盘,方便输入@、#字符
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;


有时需要限制输入文本的长度,这类操作也非常普遍和重要。

1
2
3
4
5
6
7
8
9
10
//限制输入文本的长度
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([textField.text length] > MAXLENGTH)
    {
        textField.text = [textField.text substringToIndex:MAXLENGTH-1];
        return NO;
    }
    return YES;
}


UIButton

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
     //    能够定义的button类型有以下6种,
     //    typedef enum {
     //        UIButtonTypeCustom = 0,          自定义风格
     //        UIButtonTypeRoundedRect,         圆角矩形
     //        UIButtonTypeDetailDisclosure,    蓝色小箭头按钮,主要做详细说明用
     //        UIButtonTypeInfoLight,           亮色感叹号
     //        UIButtonTypeInfoDark,            暗色感叹号
     //        UIButtonTypeContactAdd,          十字加号按钮
     //    } UIButtonType;
 
         //给定button在view上的位置
         button1.frame = CGRectMake(20, 20, 280, 20);
 
         //button背景色
         button1.backgroundColor = [UIColor clearColor];
 
         //设置button填充图片
         //[button1 setImage:[UIImage imageNamed:@"btng.png"] forState:UIControlStateNormal];
 
         //设置button标题
         [button1 setTitle:@"点击" forState:UIControlStateNormal];
         /* forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现*/
        //以下是几种状态
     //    enum {
     //        UIControlStateNormal       = 0,         常规状态显现
     //        UIControlStateHighlighted  = 1 << 0,    高亮状态显现
     //        UIControlStateDisabled     = 1 << 1,    禁用的状态才会显现
     //        UIControlStateSelected     = 1 << 2,    选中状态
     //        UIControlStateApplication  = 0x00FF0000, 当应用程序标志时
     //        UIControlStateReserved     = 0xFF000000  为内部框架预留,可以不管他
     //    };
 
         /*
                   * 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为no,
                   * 那么可以去掉这个功能
                  */
         button1.adjustsImageWhenHighlighted = NO;
         /*跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置*/
         button1.adjustsImageWhenDisabled = NO;
         /* 下面的这个属性设置为yes的状态下,按钮按下会发光*/
         button1.showsTouchWhenHighlighted = YES;
 
         /* 给button添加事件,事件有很多种,我会单独开一篇博文介绍它们,下面这个时间的意思是
                   按下按钮,并且手指离开屏幕的时候触发这个事件,跟web中的click事件一样。
                   触发了这个事件以后,执行butClick:这个方法,addTarget:self 的意思是说,这个方法在本类中
                   也可以传入其他类的指针*/
         [button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
 
         //显示控件
         [self.view addSubview:button1];


单独说明一下:

1
2
3
4
5
6
7
8
UIButton *confirmButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    confirmButton.frame = CGRectMake(110, 60+40*3+20, 100, 37);
    [confirmButton setTitle:@"确定" forState:UIControlStateNormal];       //正常状况下button显示的标题
    [confirmButton setTitle:@"确定" forState:UIControlStateHighlighted];  //高亮显示时button的标题
    confirmButton.backgroundColor = [UIColor redColor];
    [confirmButton addTarget:self action:@selector(confirm:) forControlEvents:UIControlEventTouchUpInside];//button被按下又抬起后发生的事件
    //@selector可以理解为"选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个confirmButton
    [self.view addSubview:confirmButton];

若要设置UIButton的背景图片时:

1
2
3
4
5
6
7
8
9
10
11
UIButton *confirmButton = [UIButton buttonWithType:UIButtonTypeCustom];
    confirmButton.frame = CGRectMake(10, 60, 100, 40);
    UIImage *nextStepImage = [UIImage imageNamed:@"app.png"];
    UIImage *nextStepDownImage = [UIImage imageNamed:@"app.png"];
    nextStepImage = [nextStepImage resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)];
    nextStepDownImage = [nextStepDownImage resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)];
    [confirmButton setBackgroundImage:nextStepImage forState:UIControlStateNormal];
    [confirmButton setBackgroundImage:nextStepDownImage forState:UIControlStateHighlighted];
    [confirmButton setTitle:@"确定" forState:UIControlStateNormal];
    [confirmButton addTarget:self action:@selector(confirm:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:confirmButton];
原文地址:https://www.cnblogs.com/MyBlogZH/p/5527099.html