iOS_UI_5_user-defined(自定义)View

一. 自定义视图定义
高质量代码的特点: 可复用, 可移植, 精炼.

自定义视图: 系统标准UI之外, 自己组合而出的新的视图.自定义视图,不仅能够实现高质量的代码, 实际开发中, 我们还需要自定义视图. 积累自己的代码库. 方便开发. 自己封装的视图,能像系统UI控件一样, 用于别的项目中, 能大大的降低开发成本, 提高开发效率.

二 . 自定义视图 Instance

// 1. 创建一个UIVIew子类
// 2. 在类的初始化方法中添加子视图
// 3. 类的.h 文件提供一些接口(方法), 便于外界操作子视图.

// 如:
// 创建一个登录页面的自定义视图

//1. 创建一个UIView子类LoginView 在.h中定义属性
//  LoginView.h
#import <UIKit/UIKit.h>

@interface LoginView : UIView

@property (nonatomic, retain) UILabel *nameLable;
@property (nonatomic, retain) UITextField *nameTextField;
@property (nonatomic, retain) UILabel *passWordLable;
@property (nonatomic, retain) UITextField *passWordTextField;

@end

// 2. .m 文件中初始化view
//  LoginView.m
#import "LoginView.h"

@implementation LoginView

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self p_setupView];
    }
    return self;
}

- (void) p_setupView
{
    // nameLable
    _nameLable = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 100, 40)];
    [self addSubview:_nameLable];

    // nameTextField
   _nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_nameLable.frame) + 10, CGRectGetMinY(_nameLable.frame), 150, 40)];
    _nameTextField.borderStyle = UITextBorderStyleNone;
    [self addSubview:_nameTextField];

    // PassWordLable
    _passWordLable = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(_nameLable.frame), CGRectGetMaxY(_nameLable.frame), 100, 40)];
    [self addSubview:_passWordLable];

    // PassWordTextField
    _passWordTextField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_passWordLable.frame) + 10, CGRectGetMinY(_passWordLable.frame), 150, 40)];
    _passWordTextField.borderStyle = UITextBorderStyleNone;
    [self addSubview:_passWordTextField];    
}
@end

// 之后就可以使用了,自定义的视图了

//  AppDelegate.m
#import "AppDelegate.h"
#import "LoginView.h"
@interface AppDelegate ()
@end
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

// 创建一个自定义的LoginView, 并设置它的属性
    LoginView *myLoginView = [[LoginView alloc] initWithFrame:CGRectMake(20, 50, self.window.frame.size.width - 40, 100)];
    myLoginView.backgroundColor = [UIColor brownColor];

    // name
    myLoginView.nameLable.text = @"用户名:";
    myLoginView.nameLable.textAlignment = NSTextAlignmentCenter;
    myLoginView.nameTextField.placeholder = @"输入用户名";

    // passWord
    myLoginView.passWordLable.text = @"密码:";
    myLoginView.passWordLable.textAlignment = NSTextAlignmentCenter;
    myLoginView.passWordTextField.secureTextEntry = YES;
    myLoginView.passWordTextField.placeholder = @"输入密码";
    // 添加到window 
    [self.window addSubview:myLoginView];

    return YES;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值