自定义视图

自定义视图可以自己组合视图, 提高代码的复用性, 可移植性等.
自己封装的视图就像系统的 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 的代理
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章