自定义视图.

自定义视图:

    自定义视图:除了系统UI提供的各种视图外,自己可以利用各种控件组合成各种的新的视图,积累自己的代码库,方便自己开发.

    自定义视图的步骤(再次以Label和TextField为例):

       1.创建一个UIView的子类

    2.在类的初始化方法中添加视图


//初始化方法
-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self addAllSubviews];//在初始方法中添加视图
    }
    return self;
}

//添加视图
-(void)addAllSubviews{
    
    //UILabel
    _label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0,self.frame.size.width /3, self.frame.size.height)];
    [self addSubview:_label];
    //UITextField
    _textField = [[UITextField alloc]initWithFrame:CGRectMake(self.frame.size.width / 3 ,0,self.frame.size.width / 3 * 2,self.frame.size.height)];
    
    [self addSubview:_textField];
    //UIButton
    _button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _button.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y + 10, self.frame.size.width, self.frame.size.height);
    [self addSubview:_button];
}

     3.在.h的文件中提供一些接口(方法),便于外界操作

//
//  Login.h
//  UIlession3_review
//
//  Created by lanou3g on 15/8/26.
//  Copyright (c) 2015年 lanou3g. All rights reserved.
//

//自定义登陆界面视图

#import <UIKit/UIKit.h>

@interface Login : UIView <UITextFieldDelegate>

@property(nonatomic,readonly,retain)UILabel *label;
@property(nonatomic,readonly,retain)UITextField *textField;
@property(nonatomic,retain)UIButton *button;

//设置TextField的样式
-(void)setTextFieldStyle:(UITextBorderStyle)style;

//设置Label和TextField的字体
-(void)setLabelText:(NSString *)str;
-(void)setTextFieldPlaceholder:(NSString *)str;

//字体的对齐方式
-(void)setLabelTextAlignment:(NSTextAlignment)alignment;
-(void)settextFieldAlignment:(NSTextAlignment)alignment;

//清除模式
-(void)setTextfieldClearMode:(UITextFieldViewMode)clearMode;

//密文模式
-(void)setTextSecurity:(BOOL)security;

//代理模式
-(void)setDelegate;


@end
在.m中实现上述方法:

<span style="font-size:18px;">//设置边框样式
-(void)setTextFieldStyle:(UITextBorderStyle)style{
    self.textField.borderStyle = style;
}

//设置Label和TextField的字体
-(void)setLabelText:(NSString *)str{
    self.label.text = str;
}

-(void)setTextFieldPlaceholder:(NSString *)str{
    self.textField.placeholder = str;
}

//设置对齐方式
-(void)setLabelTextAlignment:(NSTextAlignment)alignment{
    self.label.textAlignment = alignment;
}

-(void)settextFieldAlignment:(NSTextAlignment)alignment{
    self.textField.textAlignment = alignment;
}

//清除模式
-(void)setTextfieldClearMode:(UITextFieldViewMode)clearMode
{
    _textField.clearButtonMode = clearMode;
}

//密文模式
-(void)setTextSecurity:(BOOL)security{
    _textField.secureTextEntry = security;
}

//代理模式
-(void)setDelegate{
    self.textField.delegate = self;
}

//实现代理
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}</span>

<span style="font-size:18px;">测试文件:
</span><pre name="code" class="objc">    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    [self.window makeKeyAndVisible];
    
    UIView *backgroundView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
    backgroundView.backgroundColor = [UIColor whiteColor];
    [self.window addSubview:backgroundView];
    
    Login *login = [[Login alloc]initWithFrame:CGRectMake(40, 40, 300, 40)];
    [backgroundView addSubview:login];
    
    //设置边框的样式
    [login setTextFieldStyle:UITextBorderStyleRoundedRect];
    
    //设置字体
    [login setLabelText:@"登陆:"];
    [login setTextFieldPlaceholder:@"用户名/手机号/邮箱"];
    
    //字体对齐方式
    [login setLabelTextAlignment:NSTextAlignmentCenter];
    [login settextFieldAlignment:NSTextAlignmentLeft];

    //清除模式
    [login setTextfieldClearMode:UITextFieldViewModeAlways];
    
    //密文模式
    [login setTextSecurity:YES];
    
    //代理
    [login setDelegate];



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值