UI 自定义视图 Label_TextField

来源:互联网 发布:js 基础类型 编辑:程序博客网 时间:2024/06/06 02:55

自定义视图:提高代码质量(可复用,可移植)
步骤:根据需求的不同,⾃自定义视图继承的类也有所不同。⼀般⾃定义的视图会继承于UIView

以下是⾃自定义视图的要点:

1、创建⼀个UIView⼦类

2、在类的初始化⽅法中添加⼦视图

3、类的.h⽂文件提供⼀些接⼝(⽅法),便于外界操作⼦视图。

.h文件

@interface Label_TextField : UIView

//定义实例变量
@property(nonatomic,retain) UILabel *label;
@property(nonatomic,retain) UITextField *field;

//初始化方法
- (instancetype)initWithFrame:(CGRect)frame
andLabelText:(NSString*)labelText
andPlaceholder:(NSString*)placeholder;


@end




.m文件

@implementation Label_TextField

//重写dealloc方法,释放定义的实例变量
- (void)dealloc
{
[_label release];
[_field release];
[super dealloc];
}

//重写init方法
-(id)init
{
//此处调用的是本类中的指定初始化方法,即initWithFrame:
self=[self initWithFrame:CGRectZero];
if (self) {

}
return self;
}

//重写initWithFrame:方法
- (instancetype)initWithFrame:(CGRect)frame
{
self=[super initWithFrame:frame];
if (self) {
//添加label对象,添加到视图上,并其赋值给实例变量label
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0,0,frame.size.width/3, frame.size.height)];
[self addSubview:label];
[label release];
//将创建的label赋给_label
self.label=label;

//添加field对象,添加到视图上,并其赋值给实例变量field
UITextField *field=[[UITextField alloc]initWithFrame:CGRectMake(frame.size.width/3, 0, frame.size.width*2/3, frame.size.height)];
field.backgroundColor=[UIColor orangeColor];
[self addSubview:field];
[field release];
self.field=field;

}
return self;
}

//自定义初始化方法,将UILabel对象的text和UITextField的placeholder赋值
- (instancetype)initWithFrame:(CGRect)frame
andLabelText:(NSString*)labelText
andPlaceholder:(NSString*)placeholder

{
self=[self initWithFrame:frame];
if (self) {
self.label.text=labelText;
self.field.placeholder=placeholder;
}
return self;
}

//重写setFrame:方法 当视图重绘是需要重新设置UILabel和UITextField的frame
- (void)setFrame:(CGRect)frame
{
[super setFrame:frame];
self.label.frame=CGRectMake(0, 0, frame.size.width/3, frame.size.height);
self.field.frame=CGRectMake(frame.size.width/3, 0, frame.size.width*2/3, frame.size.height);
}

@end





0 0
原创粉丝点击