Files
yinmeng-ios/xplan-ios/Main/Login/View/CustomView/LoginVerifCodeView.m

134 lines
3.2 KiB
Mathematica
Raw Normal View History

2021-09-08 21:29:47 +08:00
//
// LoginVerifCodeView.m
// xplan-ios
//
// Created by on 2021/9/8.
//
#import "LoginVerifCodeView.h"
///
#import <Masonry/Masonry.h>
#import <ReactiveObjC/ReactiveObjC.h>
///Tool
#import "ThemeColor.h"
2021-09-08 21:29:47 +08:00
@interface LoginVerifCodeView ()
///
@property (nonatomic,strong) UITextField *textField;
///label
@property (nonatomic,strong) NSMutableArray<UILabel *> *lableArray;
@end
@implementation LoginVerifCodeView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
[self initEvents];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.textField];
}
- (void)initSubViewConstraints {
[self.textField mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
}
- (void)initEvents {
2021-09-09 18:15:17 +08:00
@weakify(self);
2021-09-08 21:29:47 +08:00
[[self.textField rac_signalForControlEvents:UIControlEventEditingChanged] subscribeNext:^(__kindof UITextField *textField) {
2021-09-09 18:15:17 +08:00
@strongify(self);
[self updateLablesWithText:textField];
2021-09-08 21:29:47 +08:00
}];
}
2021-09-09 18:15:17 +08:00
- (void)updateLablesWithText:(UITextField *)textField {
if (textField.text.length > self.lableArray.count) {
textField.text = [textField.text substringToIndex:self.lableArray.count];
}
2022-09-01 19:05:09 +08:00
if (textField.text.length >= self.number) {
2021-09-09 18:15:17 +08:00
[textField resignFirstResponder];
if (_textFieldChangeBlock) {
_textFieldChangeBlock(textField.text);
}
}
for (UILabel *pwLab in self.lableArray) {
if (pwLab.tag < (100 + textField.text.length)) {
NSRange range = NSMakeRange(pwLab.tag-100, 1);
pwLab.text = [textField.text substringWithRange:range];
}else{
pwLab.text = @"";
}
}
}
2021-09-08 21:29:47 +08:00
- (void)configLabelArray {
CGFloat itemWidth = 45;
CGFloat itemHeight = 45;
CGFloat itemSpace = 11;
for (int i = 0; i < _number; i++) {
UILabel * label = [[UILabel alloc] init];
label.textColor = [ThemeColor mainTextColor];
label.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18];
2021-09-08 21:29:47 +08:00
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [ThemeColor appCellBackgroundColor];
2021-09-08 21:29:47 +08:00
label.layer.masksToBounds = YES;
label.layer.cornerRadius = 10;
2021-09-09 18:15:17 +08:00
label.tag = 100 + i;
2021-09-08 21:29:47 +08:00
[self addSubview:label];
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(itemWidth, itemHeight));
make.centerY.mas_equalTo(self);
make.left.mas_equalTo(self).offset((itemWidth + itemSpace)* i);
}];
[self.lableArray addObject:label];
}
UILabel * label = [self.lableArray lastObject];
if (label) {
[self mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(label.mas_right);
make.height.mas_equalTo(itemHeight);
}];
}
}
#pragma mark - Getters And Setters
- (void)setNumber:(int)number {
_number = number;
if (_number > 0) {
[self configLabelArray];
}
}
- (UITextField *)textField {
if (!_textField) {
_textField = [[UITextField alloc] init];
2021-09-09 18:15:17 +08:00
_textField.tintColor = [UIColor clearColor];
_textField.textColor = [UIColor clearColor];
2021-09-09 18:15:17 +08:00
_textField.keyboardType = UIKeyboardTypeNumberPad;
[_textField becomeFirstResponder];
2021-09-08 21:29:47 +08:00
}
return _textField;
}
- (NSMutableArray<UILabel *> *)lableArray {
if (!_lableArray) {
_lableArray = [NSMutableArray array];
}
return _lableArray;
}
@end