自定义视图也是iPhone界面的一种自定义的控件,所谓的自定义视图就是根据自己的需求将一些最基本的控件组合起来,形成一个可以重复使用的小视图,使用时与基本控件使用方法相同,但是节省了很多资源.同时由于一些控件满足不了需求,可以自定义控件,增加一些原来没有的功能.
下面是一个自定义的登录界面:
一般的登陆界面是一个UILabel加一个UITextField作为一行,来进行界面的显示和数据的输入,而且注册界面也是这样的,所以自定义一个UILabel加一个UITextField的视图非常有必要.
自定义视图
LTView.h
//定义一个UILabel,一个UITextField
@property(nonatomic, retain, readonly) UILabel *label;
@property(nonatomic, retain, readonly) UITextField *field;
//自定义初始化方法,增加参数
- (id)initWithFrame:(CGRect)frame
text:(NSString *)text
textField:(NSString *)textField;
LTView.m
// 在初始化方法中,进行UILabel和UITextField的初始化
- (id)initWithFrame:(CGRect)frame
text:(NSString *)text
textField:(NSString *)textField
{
self = [super initWithFrame:frame];
if (self) {
[self setBackgroundColor:[UIColor redColor]];
_label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, frame.size.width / 3.0, self.frame.size.height)];
[_label setBackgroundColor:[UIColor greenColor]];
_label.textAlignment = NSTextAlignmentCenter;
_label.text = text;
[self addSubview:_label];
[_label release];
_field = [[UITextField alloc] initWithFrame:CGRectMake(_label.frame.size.width, 0, self.frame.size.width - _label.frame.size.width, self.frame.size.height)];
[_field setBackgroundColor:[UIColor yellowColor]];
_field.textAlignment = NSTextAlignmentCenter;
_field.borderStyle = UITextBorderStyleRoundedRect;
_field.placeholder = textField;
[self addSubview:_field];
[_field release];
}
return self;
}
#pragma mark -
#pragma mark 创建自定义视图
- (void)createLTView
{
// 根据需求输入不同的参数,显示界面
LTView *ltView = [[LTView alloc] initWithFrame:CGRectMake(0, 50, self.window.frame.size.width, 40) text:@"用户名" textField:@"请输入用户名"];
ltView.label.textColor = [UIColor redColor];
[self.window addSubview:ltView];
[ltView release];
LTView *bView = [[LTView alloc] initWithFrame:CGRectMake(0, 100, self.window.frame.size.width, 40) text:@"密码" textField:@"请输入密码"];
[self.window addSubview:bView];
[bView release];
}
自定义视图最大的优点就是可以根据需求进行不同基本控件组合来进行需求的实现,不用根据屏幕的改变来进行坐标的调整,所有的修改只需在自定义视图的.m文件中进行修改,省时省力.