2017.03.21

2017.03.21_第1张图片
登录注册.gif

登录注册页面:
该页面比较简单,直接使用Xib搭建即可.有几个点需要需要注意:
1.底部的快速登录按钮,图片在上面,文字在下面,只需自定义按钮,重新布局内部的子控件即可.

- (void)setup
{
    //文字居中
    self.titleLabel.textAlignment = NSTextAlignmentCenter;
}

//通过代码创建
- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}

//通过xib创建
- (void)awakeFromNib
{
    [super awakeFromNib];
    [self setup];
}

//重新布局子控件
- (void)layoutSubviews
{
    [super layoutSubviews];
    
    // 调整图片
    self.imageView.x = 0;
    self.imageView.y = 0;
    self.imageView.width = self.width;
    self.imageView.height = self.imageView.width;
    
    // 调整文字
    self.titleLabel.x = 0;
    self.titleLabel.y = self.imageView.height;
    self.titleLabel.width = self.width;
    self.titleLabel.height = self.height - self.titleLabel.y;
}

2.中间输入框:当光标聚焦时,占位文字显示为白色,光标离开时,占位文字为浅灰色.此处自定义textField,通过KVC,设置占位文字的颜色.

static NSString * const LXXPlacerholderColorKeyPath = @"_placeholderLabel.textColor";

- (void)awakeFromNib
{
    [super awakeFromNib];
    // 设置光标颜色和文字颜色一致
    self.tintColor = self.textColor;
    
    // 不成为第一响应者
    [self resignFirstResponder];
}

/**
 * 当前文本框聚焦时就会调用
 */
- (BOOL)becomeFirstResponder
{
    // 修改占位文字颜色
    [self setValue:self.textColor forKeyPath:LXXPlacerholderColorKeyPath];
    return [super becomeFirstResponder];
}

/**
 * 当前文本框失去焦点时就会调用
 */
- (BOOL)resignFirstResponder
{
    // 修改占位文字颜色
    [self setValue:[UIColor grayColor] forKeyPath:LXXPlacerholderColorKeyPath];
    return [super resignFirstResponder];
}

那么如何知道textField的占位文字的颜色这个属性呢?可以通过runtime的一些方法获取某个类的所有属性.

+ (void)getIvars
{
    unsigned int count = 0;
    
    // 拷贝出所有的成员变量列表
    Ivar *ivars = class_copyIvarList([UITextField class], &count);
    
    for (int i = 0; i

3.点击注册账号按钮时,登陆框和注册框互相切换.
只需在XIB中设置相应的约束即可:设置注册框和登录框顶部对齐,等高等宽,然后注册框的左边粘着登录框的右边.通过改变登录框距离屏幕右边的距离约束即可.

- (IBAction)registerBtnClick:(UIButton *)sender {
    
    // 退出键盘
    [self.view endEditing:YES];
    
    if (self.loginLeftConstraint.constant == 0) {
        self.loginLeftConstraint.constant = -self.view.width;
        sender.selected = YES;
    }else {
        self.loginLeftConstraint.constant = 0;
        sender.selected = NO;
    
    }
    
    [UIView animateWithDuration:0.25 animations:^{
        [self.view layoutIfNeeded];
    }];
    
}

你可能感兴趣的:(2017.03.21)