您的位置:首页 > 其它

自定义视图

2015-11-07 15:36 387 查看
自定义视图可以自己组合视图, 提高代码的复用性, 可移植性等.

自己封装的视图就像系统的 UI 控件一样, 可大大降低开发成本, 提高开发效率.

需要注意的是自定义视图同样继承于 UIView. 在自定义视图中的.h文件中要定义一些接口, 用于在外界操作自定义视图.

在组合视图中定义延展, 在延展中定义该组合视图中的控件属性 :

@interface combinationView ()
@property (nonatomic, retain) UILabel *leftLabel;
@property (nonatomic, retain) UITextField *rightTextField;
@end


在.m文件中重写初始化方法:

//重写初始化方法
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self) {
//加载自身控件
//左 Label
[self setUpLeftLabelWithWidth:frame.size.width Height:frame.size.height];
//右 TextField
[self setUpRightTextFieldWithWidth:frame.size.width Height:frame.size.height];
}
return self;
}
//创建 label
- (void)setUpLeftLabelWithWidth:(CGFloat)width Height:(CGFloat)height {
self.leftLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 1, width / 3, height - 2)];
[self addSubview:_leftLabel];
[_leftLabel release];

}
//创建 textField
- (void)setUpRightTextFieldWithWidth:(CGFloat)width Height:(CGFloat)height {
self.rightTextField = [[UITextField alloc] initWithFrame:CGRectMake(width / 3, 1, width / 3 * 2, height - 2)];
_rightTextField.borderStyle = UITextBorderStyleRoundedRect;//设置圆角
[self addSubview:_rightTextField];
[_rightTextField release];
}


在 .m 文件中实现 .h 文件中的接口 :

这里的这些接口可以用来设置组合视图中控件的属性, 例如:

<----! combinationView.h>
//给 Label 设置文字的接口
- (void)setLabelText:(NSString *)text;
//给 TextField 设置占位符的接口
- (void)setTextFieldPlacehoder:(NSString *)placeholder;
//给TextField 设置键盘类型的接口
- (void)setKeyboardType:(UIKeyboardType)keyboardType;
//给 textField 设置密码格式
- (void)setSecureText:(BOOL)secureTextEntry;
//获取 textField 中输入文字的接口
- (NSString *)getTextFieldText;
//给 TextField 设置代理的接口
- (void)setDelegate:(id<UITextFieldDelegate>)delegate;


<---- ! combinationView.m>
//给 Label 设置文字的接口
- (void)setLabelText:(NSString *)text {
self.leftLabel.text = text;
}

//给 TextField 设置占位符的接口
- (void)setTextFieldPlacehoder:(NSString *)placeholder {
self.rightTextField.placeholder = placeholder;
}

//给TextField 设置键盘类型的接口
- (void)setKeyboardType:(UIKeyboardType)keyboardType {
self.rightTextField.keyboardType = keyboardType;
}

//给 textField 设置密码格式
- (void)setSecureText:(BOOL)secureTextEntry {
self.rightTextField.secureTextEntry = secureTextEntry;
}

//获取 textField 中输入文字的接口
- (NSString *)getTextFieldText {
return self.rightTextField.text;
}

//给 TextField 设置代理的接口,  例如在视图控制器里用 combinationView , 就要设置把视图控制器的 self 传进来, 还要设置视图控制器遵从 UITextFieldDelegate 协议
- (void)setDelegate:(id<UITextFieldDelegate>)delegate {
self.rightTextField.delegate = delegate;//外界传入的参数是谁, 谁就是 textField 的代理
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: