自定义视图
2015-11-07 15:36
387 查看
自定义视图可以自己组合视图, 提高代码的复用性, 可移植性等.
自己封装的视图就像系统的 UI 控件一样, 可大大降低开发成本, 提高开发效率.
需要注意的是自定义视图同样继承于 UIView. 在自定义视图中的.h文件中要定义一些接口, 用于在外界操作自定义视图.
在组合视图中定义延展, 在延展中定义该组合视图中的控件属性 :
在.m文件中重写初始化方法:
在 .m 文件中实现 .h 文件中的接口 :
这里的这些接口可以用来设置组合视图中控件的属性, 例如:
自己封装的视图就像系统的 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 的代理 }
相关文章推荐
- 显示和隐藏动作栏(Action Bar)
- TCP/IP基础知识
- libevent代码阅读(12)——event_base中的一些事件处理器容器
- JNI中如何在C++文件中调用java中的对象,举例说明
- C语言学习笔记0
- Android开发中用于替代Enum的@IntDef的使用
- shell设置系统环境变量的问题
- 语音简介
- 典型用户和场景
- 方格取数(2)(最大点权独立集)
- java 抽象类
- JUnite4总结
- 深入透析Android事件分发机制
- 管理员账户遇到“操作需要管理员权限”解决方法
- [笔记] Convex Optimization 2015.10.21
- Windows下Mysql解压缩版配置安装与卸载
- 【回顾整理】就是实现弹出登录框并且检验输入值
- C++中,指针数组和数组指针
- Delphi 原生ADO(二)
- Sizeof和strlen简单区别