| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586 |
- //
- // YMPasswordLoginView.m
- // MSYOUPAI
- //
- // Created by YoMi on 2024/2/4.
- // Copyright © 2024 MS. All rights reserved.
- //
- #import "YMPasswordLoginView.h"
- #import "YMPasswordLoginViewModel.h"
- @interface YMPasswordLoginView ()
- /// 密码登录VM
- @property (nonatomic, strong) YMPasswordLoginViewModel *viewModel;
- @property (nonatomic, strong) UIView *topView;
- @property (nonatomic, strong) UILabel *topLb1;
- @property (nonatomic, strong) UILabel *topLb2;
- @property (nonatomic, strong) UILabel *titleLb;
- @property (nonatomic, strong) UILabel *titleLine;
- @property (nonatomic, strong) UIImageView *bgImgv;
- /// 手机视图
- @property (nonatomic, strong) UIView *mobileView;
- /// 手机号标签
- @property (nonatomic, strong) UILabel *mobileLb;
- /// 手机号输入框
- @property (nonatomic, strong) UITextField *mobileInputBox;
- /// 密码视图
- @property (nonatomic, strong) UIView *passwordView;
- /// 密码标签
- @property (nonatomic, strong) UILabel *passwordLb;
- /// 密码输入框
- @property (nonatomic, strong) UITextField *passwordInputBox;
- /// 登录按钮
- @property (nonatomic, strong) UIButton *loginBtn;
- /** 忘记密码按钮*/
- @property (nonatomic, strong) UIButton *forgotPasswordBtn;
- /** 注册按钮*/
- @property (nonatomic, strong) UIButton *registerBtn;
- /** 登录方式堆叠视图*/
- @property (nonatomic, strong) UIStackView *loginMethodStackView;
- /// 微信登录按钮
- @property (nonatomic, strong) UIButton *wechatLoginBtn;
- /// 协议视图
- @property (nonatomic, strong) UIView *agreementView;
- /// 单选按钮
- @property (nonatomic, strong) UIButton *radioBtn;
- /// 协议标签
- @property (nonatomic, strong) YYLabel *agreementLb;
- @end
- @implementation YMPasswordLoginView
- - (void)ym_setupViews{
-
- [self addSubview:self.topView];
- [self.topView addSubview:self.topLb1];
- [self.topView addSubview:self.topLb2];
- [self addSubview:self.bgImgv];
- [self addSubview:self.titleLb];
- [self addSubview:self.titleLine];
-
- [self addSubview:self.mobileLb];
- [self addSubview:self.mobileView];
- [self addSubview:self.mobileInputBox];
-
- [self addSubview:self.passwordView];
- [self addSubview:self.passwordLb];
- [self addSubview:self.passwordInputBox];
-
- [self addSubview:self.loginBtn];
- [self addSubview:self.forgotPasswordBtn];
- [self addSubview:self.registerBtn];
-
- [self addSubview:self.loginMethodStackView];
- [self.loginMethodStackView addArrangedSubview:self.wechatLoginBtn];
-
- [self addSubview:self.agreementView];
- [self.agreementView addSubview:self.radioBtn];
- [self.agreementView addSubview:self.agreementLb];
-
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- }
- - (void)updateConstraints{
- [self.topView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self).offset(adapt(96));
- make.left.equalTo(self).offset(adapt(30));
- make.right.equalTo(self).offset(adapt(-30));
- make.height.mas_equalTo(adapt(85));
- }];
-
- [self.topLb1 mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.topView);
- make.left.equalTo(self.topView);
- make.right.equalTo(self.topView);
- }];
-
- [self.topLb2 mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.topLb1.mas_bottom).offset(5);
- make.left.equalTo(self.topView);
- make.right.equalTo(self.topView);
- }];
-
- [self.bgImgv mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self).offset(adapt(193));
- make.left.right.equalTo(self).inset(adapt(20));
- make.height.mas_equalTo(adapt(277));
- }];
- [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.bgImgv).offset(adapt(10));
- make.centerX.equalTo(self.bgImgv);
- }];
- [self.titleLine mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.titleLb.mas_bottom).offset(adapt(5));
- make.centerX.equalTo(self.bgImgv);
- make.width.mas_equalTo(adapt(28));
- make.height.mas_equalTo(adapt(2));
- }];
-
- [self.mobileLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.bgImgv).offset(adapt(67));
- make.left.equalTo(self.bgImgv).offset(adapt(20));
- make.right.equalTo(self.bgImgv).offset(adapt(-20));
- }];
-
- [self.mobileView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.mobileLb.mas_bottom).offset(adapt(5));
- make.left.equalTo(self.bgImgv).offset(adapt(20));
- make.right.equalTo(self.bgImgv).offset(adapt(-20));
- make.height.mas_equalTo(adapt(48));
- }];
-
- [self.mobileInputBox mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.mobileView);
- make.left.equalTo(self.mobileView).offset(adapt(30));
- make.right.equalTo(self.mobileView);
- make.bottom.equalTo(self.mobileView);
- }];
-
- [self.passwordLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.mobileView.mas_bottom).offset(adapt(20));
- make.left.equalTo(self.mobileLb);
- }];
- [self.passwordView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.passwordLb.mas_bottom).offset(adapt(5));
- make.left.equalTo(self.bgImgv).offset(adapt(20));
- make.right.equalTo(self.bgImgv).offset(adapt(-20));
- make.height.mas_equalTo(adapt(48));
- }];
-
-
- [self.passwordInputBox mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.passwordView);
- make.left.equalTo(self.passwordView).offset(adapt(30));
- make.right.equalTo(self.passwordView);
- make.bottom.equalTo(self.passwordView);
- }];
-
- [self.registerBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.passwordView.mas_bottom).offset(adapt(10));
- make.left.equalTo(self.bgImgv).offset(adapt(20));
- make.height.mas_equalTo(adapt(25));
- }];
-
- [self.forgotPasswordBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.registerBtn);
- make.right.equalTo(self.bgImgv).offset(adapt(-20));
- make.height.mas_equalTo(adapt(25));
- }];
-
- [self.agreementView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(self.mas_centerX);
- make.bottom.equalTo(self).offset(Is_iPhoneX ? adapt(-32) : adapt(-12));
- }];
-
- [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.bottom.equalTo(self.agreementView.mas_top).offset(adapt(-15));
- make.left.equalTo(self).offset(adapt(40));
- make.right.equalTo(self).offset(adapt(-40));
- make.height.mas_equalTo(adapt(54));
- }];
-
- [self.loginMethodStackView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(self.mas_centerX);
- make.bottom.equalTo(self.loginBtn.mas_top).offset(adapt(-10));
- }];
-
- [self.wechatLoginBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.width.height.mas_equalTo(53);
- make.bottom.equalTo(self.loginMethodStackView);
- }];
-
- [self.radioBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.agreementLb.mas_centerY);
- make.left.equalTo(self.agreementView).offset(adapt(5));
- make.width.height.mas_equalTo(adapt(17));
- }];
-
- [self.agreementLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.agreementView).offset(adapt(10));
- make.left.equalTo(self.radioBtn.mas_right).offset(adapt(5));
- make.right.equalTo(self.agreementView).offset(adapt(-5));
- make.bottom.equalTo(self.agreementView).offset(adapt(-10));
- }];
-
- [super updateConstraints];
- }
- - (void)ym_bindViewModel:(YMPasswordLoginViewModel *)viewModel{
- if (!viewModel) {
- return;
- }
-
- _viewModel = viewModel;
-
- RAC(self.viewModel , mobile) = [[RACSignal merge:@[RACObserve(self.mobileInputBox, text),self.mobileInputBox.rac_textSignal]] takeUntil:self.rac_willDeallocSignal];
-
- RAC(self.viewModel , password) = [[RACSignal merge:@[RACObserve(self.passwordInputBox, text),self.passwordInputBox.rac_textSignal]]takeUntil:self.rac_willDeallocSignal];
-
- RAC(self.loginBtn , enabled) = self.viewModel.validLoginSignal;
-
- [self.viewModel.validLoginSignal subscribeNext:^(id _Nullable value) {
- self.loginBtn.enabled = [value boolValue];
- if ([value boolValue]) {
- self.loginBtn.alpha = 1;
- } else {
- self.loginBtn.alpha = 0.5;
- }
- }];
- }
- - (UIImageView *)bgImgv {
- if (!_bgImgv) {
- _bgImgv = [[UIImageView alloc] init];
- _bgImgv.backgroundColor = HexColorFromRGB(0xFFFFFF);
- _bgImgv.layer.masksToBounds = YES;
- _bgImgv.layer.cornerRadius = adapt(20);
- }
- return _bgImgv;
- }
- - (UIView *)mobileView{
- if (!_mobileView) {
- _mobileView = [[UIView alloc]init];
- _mobileView.backgroundColor = HexColorFromRGB(0xF2F5FF);
- _mobileView.layer.masksToBounds = YES;
- _mobileView.layer.cornerRadius = adapt(16);
- }
- return _mobileView;
- }
- - (UIView *)topView{
- if (!_topView) {
- _topView = [[UIView alloc]init];
- _topView.hidden = NO;
- }
- return _topView;
- }
- - (UILabel *)mobileLb{
- if (!_mobileLb) {
- _mobileLb = [[UILabel alloc]init];
- _mobileLb.font = LCBoldFont(13);
- _mobileLb.textColor = HexColorFromRGB(0x333333);
- _mobileLb.textAlignment = NSTextAlignmentLeft;
- _mobileLb.text = @"账号";
- }
- return _mobileLb;
- }
- - (UILabel *)topLb1{
- if (!_topLb1) {
- _topLb1 = [[UILabel alloc]init];
- _topLb1.font = LCBoldFont(32);
- _topLb1.textColor = HexColorFromRGB(0x333333);
- _topLb1.textAlignment = NSTextAlignmentLeft;
- _topLb1.text = @"欢迎登录👏";
- }
- return _topLb1;
- }
- - (UILabel *)topLb2{
- if (!_topLb2) {
- _topLb2 = [[UILabel alloc]init];
- _topLb2.font = LCBoldFont(15);
- _topLb2.textColor = HexColorFromRGB(0x545D79);
- _topLb2.textAlignment = NSTextAlignmentLeft;
- _topLb2.text = @"注册登录,开启精彩之旅";
- }
- return _topLb2;
- }
- - (UILabel *)titleLb {
- if (!_titleLb) {
- _titleLb = [[UILabel alloc] init];
- _titleLb.font = LCBoldFont(15);
- _titleLb.textColor = rgba(252, 94, 158, 1);
- _titleLb.textAlignment = NSTextAlignmentLeft;
- _titleLb.text = @"账号登录";
- }
- return _titleLb;
- }
- - (UILabel *)titleLine {
- if (!_titleLine) {
- _titleLine = [[UILabel alloc] init];
- [_titleLine ym_setGradientBackgroundWithColors:kMainGradColors locations:kMainGradLocation startPoint:kMainGradStartP endPoint:kMainGradEndP];
- }
- return _titleLine;
- }
- - (UITextField *)mobileInputBox{
- if (!_mobileInputBox) {
- NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
- style.minimumLineHeight = 0;
- NSMutableAttributedString *placeholderAttributed = [[NSMutableAttributedString alloc]initWithString:@"请输入手机号"];
- placeholderAttributed.yy_paragraphStyle = style;
- placeholderAttributed.yy_font = LCFont(14);
- placeholderAttributed.yy_color = HexColorFromRGB(0xADB0BC);
- _mobileInputBox = [[UITextField alloc]init];
- _mobileInputBox.attributedPlaceholder = placeholderAttributed;
- _mobileInputBox.clearButtonMode = UITextFieldViewModeWhileEditing;
- _mobileInputBox.autocorrectionType = UITextAutocorrectionTypeDefault;
- _mobileInputBox.autocapitalizationType = UITextAutocapitalizationTypeNone;
- _mobileInputBox.keyboardType = UIKeyboardTypePhonePad;
- _mobileInputBox.ba_maxLength = 11;
- }
- return _mobileInputBox;
- }
- - (UIView *)passwordView{
- if (!_passwordView) {
- _passwordView = [[UIView alloc]init];
- _passwordView.backgroundColor = HexColorFromRGB(0xF2F5FF);
- _passwordView.layer.masksToBounds = YES;
- _passwordView.layer.cornerRadius = adapt(16);
- }
- return _passwordView;
- }
- - (UILabel *)passwordLb{
- if (!_passwordLb) {
- _passwordLb = [[UILabel alloc]init];
- _passwordLb.font = LCBoldFont(13);
- _passwordLb.textColor = HexColorFromRGB(0x333333);
- _passwordLb.textAlignment = NSTextAlignmentCenter;
- _passwordLb.text = @"密码";
- }
- return _passwordLb;
- }
- - (UITextField *)passwordInputBox{
- if (!_passwordInputBox) {
- NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
- style.minimumLineHeight = 0;
- NSMutableAttributedString *placeholderAttributed = [[NSMutableAttributedString alloc]initWithString:@"请输入密码"];
- placeholderAttributed.yy_paragraphStyle = style;
- placeholderAttributed.yy_font = LCFont(14);
- placeholderAttributed.yy_color = HexColorFromRGB(0xADB0BC);
- _passwordInputBox = [[UITextField alloc]init];
- _passwordInputBox.attributedPlaceholder = placeholderAttributed;
- _passwordInputBox.clearButtonMode = UITextFieldViewModeWhileEditing;
- _passwordInputBox.autocorrectionType = UITextAutocorrectionTypeDefault;
- _passwordInputBox.autocapitalizationType = UITextAutocapitalizationTypeNone;
- _passwordInputBox.keyboardType = UIKeyboardTypeDefault;
- _passwordInputBox.secureTextEntry = YES;
- }
- return _passwordInputBox;
- }
- - (UIButton *)loginBtn{
- if (!_loginBtn) {
- _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _loginBtn.titleLabel.font = LCBoldFont(19);
- [_loginBtn setTitle:@"登录" forState:UIControlStateNormal];
- [_loginBtn setTitleColor:MAINGRIDTitleC forState:UIControlStateNormal];
- [_loginBtn ym_setGradientBackgroundWithColors:kMainGradColors locations:kMainGradLocation startPoint:kMainGradStartP endPoint:kMainGradEndP];
- _loginBtn.layer.cornerRadius = adapt(16);
- _loginBtn.layer.masksToBounds = YES;
- WS(weakSelf)
- [[[_loginBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- if (OCStringIsEmpty(weakSelf.mobileInputBox.text)) {
- [ZCHUDHelper showTitle:@"请输入手机号"];
- return;
- }
- if (OCStringIsEmpty(weakSelf.passwordInputBox.text)) {
- [ZCHUDHelper showTitle:@"请输入密码"];
- return;
- }
- if (!weakSelf.radioBtn.selected) {
- YMLoginRegistrAgreementPopupView *customView = [[YMLoginRegistrAgreementPopupView alloc]init];
- YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:[YMGlobalUtils getCurrentVC].view popStyle:YMPopupStyleFade dismissStyle:YMDismissStyleFade];
- popupView.priority = 999;
- popupView.cornerRadius = adapt(10);
- popupView.rectCorners = UIRectCornerAllCorners;
- popupView.positionStyle = YMPositionStyleCenter;
- popupView.isHideBg = NO;
- popupView.bgAlpha = 0.3;
- [popupView pop];
-
- @weakify(popupView)
- customView.buttonBlock = ^(BOOL isConfirm) {
- @strongify(popupView)
- if (isConfirm) {
- weakSelf.radioBtn.selected = YES;
- [weakSelf.viewModel accountPasswordLoginRequest];
- }
- [popupView dismissWithStyle:YMDismissStyleFade duration:2.0];
- };
- customView.dismissBlock = ^{
- @strongify(popupView)
- [popupView dismissWithStyle:YMDismissStyleFade duration:2.0];
- };
- return;
- }
- [weakSelf.viewModel accountPasswordLoginRequest];
- }];
- }
- return _loginBtn;
- }
- - (UIButton *)forgotPasswordBtn{
- if (!_forgotPasswordBtn) {
- _forgotPasswordBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _forgotPasswordBtn.titleLabel.font = LCFont(12);
- [_forgotPasswordBtn setTitle:@"忘记密码" forState:UIControlStateNormal];
- [_forgotPasswordBtn setTitleColor:HexColorFromRGB(0x8994B6) forState:UIControlStateNormal];
- WS(weakSelf)
- [[[_forgotPasswordBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- [weakSelf.viewModel gotoForgetPasswordVC];
- }];
- }
- return _forgotPasswordBtn;
- }
- - (UIButton *)registerBtn{
- if (!_registerBtn) {
- _registerBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _registerBtn.titleLabel.font = LCFont(12);
- [_registerBtn setTitle:@"立即注册" forState:UIControlStateNormal];
- [_registerBtn setTitleColor:rgba(252, 94, 158, 1) forState:UIControlStateNormal];
- WS(weakSelf)
- [[[_registerBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- [weakSelf.viewModel gotoRegisterVC];
- }];
- }
- return _registerBtn;
- }
- - (UIStackView *)loginMethodStackView{
- if (!_loginMethodStackView) {
- _loginMethodStackView = [[UIStackView alloc]init];
- /**
- UILayoutConstraintAxisVertical 纵向
- UILayoutConstraintAxisHorizontal 横向
- */
- _loginMethodStackView.axis = UILayoutConstraintAxisHorizontal;
- /**
- UIStackViewAlignmentFill 将stackView充满
- 比如label,不管文字多少,将大小按照设置的非主轴方向充满
- ex: Vertical 就是水平铺满
-
- UIStackViewAlignmentLeading 在Vertical方向上生效,表示左对齐
- 比如label,文字自适应,如果小于非主轴方向的宽度,将不充满
-
- UIStackViewAlignmentTop 在Horizontal方向上生效,表示左对齐
- 比如label,文字自适应,如果小于非主轴方向的高度,将不充满
- 本质UIStackViewAlignmentTop = UIStackViewAlignmentLeading
-
- UIStackViewAlignmentTrailing 在Vertical方向上生效,表示右对齐
- 比如label,文字自适应,如果小于非主轴方向的宽度,将不充满
-
- UIStackViewAlignmentBottom 在Horizontal方向上生效,表示右对齐
- 比如label,文字自适应,如果小于非主轴方向的高度,将不充满
- 本质UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing
-
- UIStackViewAlignmentLastBaseline 仅限于Horizontal
- 按照最高的一个视图的bottom对齐,最高的视图top对齐
-
- UIStackViewAlignmentCenter 中心对齐
- 不充满,沿主轴方向中心对齐
- */
- _loginMethodStackView.alignment = UIStackViewAlignmentCenter;
- _loginMethodStackView.spacing = adapt(10);
-
- }
- return _loginMethodStackView;
- }
- - (UIButton *)wechatLoginBtn{
- if (!_wechatLoginBtn) {
- _wechatLoginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [_wechatLoginBtn setBackgroundImage:ImageByName(@"ym_login_wechat_login_icon") forState:UIControlStateNormal];
- _wechatLoginBtn.hidden = YES;
- WS(weakSelf)
- [[[_wechatLoginBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- if (!weakSelf.radioBtn.selected) {
- YMLoginRegistrAgreementPopupView *customView = [[YMLoginRegistrAgreementPopupView alloc]init];
- YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:nil popStyle:YMPopupStyleFade dismissStyle:YMDismissStyleFade];
- popupView.priority = 999;
- popupView.cornerRadius = adapt(10);
- popupView.rectCorners = UIRectCornerAllCorners;
- popupView.positionStyle = YMPositionStyleCenter;
- popupView.isHideBg = NO;
- popupView.bgAlpha = 0.3;
- [popupView pop];
-
- @weakify(popupView)
- customView.buttonBlock = ^(BOOL isConfirm) {
- @strongify(popupView)
- if (isConfirm) {
- weakSelf.radioBtn.selected = YES;
- [weakSelf.viewModel sendWechatAuth];
- }
- [popupView dismissWithStyle:YMDismissStyleFade duration:2.0];
- };
- customView.dismissBlock = ^{
- @strongify(popupView)
- [popupView dismissWithStyle:YMDismissStyleFade duration:2.0];
- };
- return;
- }
- [weakSelf.viewModel sendWechatAuth];
- }];
- }
- return _wechatLoginBtn;
- }
- - (UIView *)agreementView{
- if (!_agreementView) {
- _agreementView = [[UIView alloc]init];
- }
- return _agreementView;
- }
- - (UIButton *)radioBtn{
- if (!_radioBtn) {
- _radioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [_radioBtn setBackgroundImage:ImageByName(@"ym_login_auth_normal_icon") forState:UIControlStateNormal];
- [_radioBtn setBackgroundImage:ImageByName(@"ym_login_auth_selected_icon") forState:UIControlStateSelected];
- [[[_radioBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- sender.selected = !sender.selected;
- }];
- }
- return _radioBtn;
- }
- - (YYLabel *)agreementLb{
- if (!_agreementLb) {
- _agreementLb = [[YYLabel alloc] init];
- _agreementLb.numberOfLines = 0;
- _agreementLb.preferredMaxLayoutWidth = kFrameWidth - adapt(55);
- NSString *agreementText = @"登录即代表同意《用户协议》与《隐私政策》";
- NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
- paragraphStyle.alignment = NSTextAlignmentLeft;
-
- NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:agreementText];
- attributedString.yy_font = LCFont(12);
- attributedString.yy_color = HexColorFromRGBA(0x000000,0.65);
- attributedString.yy_paragraphStyle = paragraphStyle;
- //设置高亮色和点击事件
- [attributedString yy_setTextHighlightRange:[agreementText rangeOfString:@"《用户协议》"] color:AGREEMENTColor backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
- YMWebArticleViewModel *webArticleVM = [[YMWebArticleViewModel alloc]initWithParams:@{
- ParamsUrl:[NSString stringWithFormat:@"%@%@",[LCSaveData getBaseURL]?[LCSaveData getBaseURL]:BaseURL,UserProtocolH5]
- }];
- [YMRouter openURL:stringFormat(@"%@%@", YM_ROUTER_URL_PREFIX, YM_ROUTER_WEB_ARTICLE) withUserInfo:@{
- RouterViewModel:webArticleVM
- } completion:nil];
- }];
- //设置高亮色和点击事件
- [attributedString yy_setTextHighlightRange:[[attributedString string] rangeOfString:@"《隐私政策》"] color:AGREEMENTColor backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
- YMWebArticleViewModel *webArticleVM = [[YMWebArticleViewModel alloc]initWithParams:@{
- ParamsUrl:[NSString stringWithFormat:@"%@%@",[LCSaveData getBaseURL]?[LCSaveData getBaseURL]:BaseURL,UserPrivacyH5]
- }];
- [YMRouter openURL:stringFormat(@"%@%@", YM_ROUTER_URL_PREFIX, YM_ROUTER_WEB_ARTICLE) withUserInfo:@{
- RouterViewModel:webArticleVM
- } completion:nil];
- }];
- _agreementLb.attributedText = attributedString;
- }
- return _agreementLb;
- }
- @end
|