IOS--UI--LessonCustumView 自定义视图

来源:互联网 发布:淘宝下单返利 编辑:程序博客网 时间:2024/05/23 20:25

自定义视图
1.通常我们自定义视图 是在 AppDelegate 里面 会有很长的一大段影响Appdelegate 的运行,那我们就可以将自定义的视图封装成一个类 创建 LTView (label 和 TextField)的视图

2.创建 LTView 的. h 和. m
.h里面

#import <UIKit/UIKit.h>@interface LTView : UIView// 定义两个属性: label 和 textField@property (nonatomic,retain)UILabel *label;@property (nonatomic,retain)UITextField* textField;@end

.m 里面

#import "LTView.h"@implementation LTView- (void)dealloc{    [_textField release];    [_label release];    [super dealloc];}// 重写 UIView 的 初始化方法-(id) initWithFrame:(CGRect)frame{    self =[super initWithFrame:frame];    if (self) { // 一般不会直接写在这里面 会先一个方法 然后在这里调用        [self p_setUp];//p_setUp 算是一个传统的名字 可以随便起    }return self;}// 写完这个方法 要立刻在重写 UIView 的初始化方法 里面调用-(void)p_setUp{    _label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width/3, self.frame.size.height)];// 这个地方 视图的长宽 都设为活值 方便我们在 Appdelegate . m里面赋值.  //  self.frame.size.width/3 点语法     _label.backgroundColor= [UIColor yellowColor];    [self addSubview: _label];    [_label release];// alloc 就要 release;    _textField = [[UITextField alloc]initWithFrame:CGRectMake(_label.frame.size.width, 0, self.frame.size.width*2/3, self.frame.size.height)];    _textField .backgroundColor = [UIColor redColor];    [self addSubview:_textField];    [_textField release];}@end

写完之后 我们就可在Appdelegate.m 里面 直接引用
3. // 使用自定义的视图类

   NSArray *labelText = @[@"用户名",@"用户密码",@"确认密码",@"电话",@"邮箱"];    NSArray *placeholderText = @[@"请输入用户名",@"请输入密码",@"请确认密码",@"请输入电话",@"请输入邮箱"];    NSInteger y = 30;    for (int i = 0; i < 5; i++) {        LTView *view = [[LTView alloc]initWithFrame:CGRectMake(15, y, 300, 40)];        view .backgroundColor = [UIColor whiteColor];        view.label.text = labelText[i];// 用语法糖 快速为 view 的属性 label.text 赋值        // 为 textField 赋值         view.textField.placeholder = placeholderText[i];        //  为 view.textField 设置代理        view.textField.delegate = self;        [self.window addSubview:view];        [view release];        y +=60;        // 在这里 为 textField 加一个代理 然后收回键盘    }    self.window.backgroundColor = [UIColor whiteColor];    [self.window makeKeyAndVisible];    return YES;}方法外面写方法// 代理实现-(BOOL) textFieldShouldReturn:(UITextField *)textField{    //回收键盘     (resignFirstResponder:取消第一响应者)    [textField resignFirstResponder];    return YES;}

总结 :摆脱传统的自定义视图 让 delegate 里面更简洁 出错的适合也方便查找
1.封装我们需要定义的视图类
2.在 delegate.m 里引用头文件
3.就可以开心使用啦;

0 0
原创粉丝点击