Files
my_yuyin/QXLive/Login(登录)/View/QXLoginBottomView.m
2025-09-22 18:48:29 +08:00

138 lines
5.8 KiB
Objective-C

//
// QXThirdLoginView.m
// QXLive
//
// Created by 启星 on 2025/5/7.
//
#import "QXLoginBottomView.h"
#import "NSAttributedString+YYText.h"
@interface QXLoginBottomView()<QXLoginBottomViewDelegate>
@property (nonatomic,strong)UILabel *titleLabel;
@property (nonatomic,strong)QXLoginAgreementView *agreeView;
@end
@implementation QXLoginBottomView
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
}
return self;
}
-(void)initSubViews{
self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.width, 20)];
self.titleLabel.text = QXText(@"其他方式登录");
self.titleLabel.textColor = RGB16(0x666666);
self.titleLabel.textAlignment = NSTextAlignmentCenter;
self.titleLabel.font = [UIFont systemFontOfSize:12];
[self addSubview:self.titleLabel];
}
-(void)setIsDefaultAgree:(BOOL)isDefaultAgree{
_isDefaultAgree = isDefaultAgree;
self.agreeView.agreeBtn.selected = isDefaultAgree;
}
-(void)setThirdArray:(NSArray *)thirdArray{
_thirdArray = thirdArray;
CGFloat startX = 0;
CGFloat btnWidth = 30;
CGFloat btnMargin = 16;
if (thirdArray.count == 0) {
self.titleLabel.hidden = YES;
return;
}
self.titleLabel.hidden = NO;
if (thirdArray.count == 1) {
startX = SCREEN_WIDTH/2.0-btnWidth/2.0;
}else if (thirdArray.count == 2){
startX = SCREEN_WIDTH/2.0-btnMargin/2.0-btnWidth;
}else if (thirdArray.count == 3){
startX = SCREEN_WIDTH/2.0-btnWidth/2.0-btnMargin-btnWidth;
}else if (thirdArray.count == 3){
startX = SCREEN_WIDTH/2.0-btnMargin/2.0-btnMargin-2*btnWidth;
}
for (int i = 0 ; i < thirdArray.count;i++) {
NSDictionary *dict = thirdArray[i];
NSInteger type = [dict[@"type"] integerValue];
NSString *icon = [NSString stringWithFormat:@"%@",dict[@"icon"]];
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(startX+(btnMargin+btnWidth)*i, self.titleLabel.bottom+14, btnWidth, btnWidth)];
[btn setImage:[UIImage imageNamed:icon] forState:(UIControlStateNormal)];
btn.tag = type;
[btn addTarget:self action:@selector(thirdLoginAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:btn];
}
self.agreeView = [[QXLoginAgreementView alloc] initWithFrame:CGRectMake(0, self.titleLabel.bottom+103, SCREEN_WIDTH, 30)];
self.agreeView.delegate = self;
[self addSubview:self.agreeView];
}
-(void)thirdLoginAction:(UIButton*)sender{
if (self.delegate && [self.delegate respondsToSelector:@selector(thirdLoginWithType:)]) {
[self.delegate thirdLoginWithType:sender.tag];
}
}
-(void)didClickAgree:(BOOL)isAgree{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickAgree:)]) {
[self.delegate didClickAgree:isAgree];
}
}
-(void)didClickAgreementLoginWithUrl:(NSString *)url type:(NSInteger)type{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickAgreementLoginWithUrl:type:)]) {
[self.delegate didClickAgreementLoginWithUrl:url type:type];
}
}
@end
@implementation QXLoginAgreementView
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
}
return self;
}
-(void)initSubViews{
self.agreeBtn = [[UIButton alloc] initWithFrame:CGRectMake(40, 0, 30, 30)];
[self.agreeBtn setImage:[UIImage imageNamed:@"login_agreement_nor"] forState:(UIControlStateNormal)];
[self.agreeBtn setImage:[UIImage imageNamed:@"login_agreement_sel"] forState:(UIControlStateSelected)];
[self addSubview:self.agreeBtn];
[self.agreeBtn addTarget:self action:@selector(agreeAction:) forControlEvents:(UIControlEventTouchUpInside)];
NSString *str = [NSString stringWithFormat:@"%@%@%@%@",QXText(@"我已阅读并同意"),QXText(@"《用户使用协议》"),QXText(@""),QXText(@"《隐私政策》")];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str];
MJWeakSelf
[attr yy_setTextHighlightRange:[str rangeOfString:QXText(@"《用户使用协议》")] color:RGB16(0xFF8ACC) backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickAgreementLoginWithUrl:type:)]) {
[weakSelf.delegate didClickAgreementLoginWithUrl:@"111" type:1];
}
}];
[attr yy_setTextHighlightRange:[str rangeOfString:QXText(@"《隐私政策》")] color:RGB16(0xFF8ACC) backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickAgreementLoginWithUrl:type:)]) {
[weakSelf.delegate didClickAgreementLoginWithUrl:@"111" type:2];
}
}];
[attr yy_setFont:[UIFont systemFontOfSize:12] range:NSMakeRange(0, str.length)];
[attr yy_setColor:RGB16(0x333333) range:NSMakeRange(0, str.length)];
[attr yy_setColor:QXConfig.themeColor range:[str rangeOfString:QXText(@"《用户使用协议》")]];
[attr yy_setColor:QXConfig.themeColor range:[str rangeOfString:QXText(@"《隐私政策》")]];
_textLabel = [[YYLabel alloc] initWithFrame:CGRectMake(self.agreeBtn.right, 0, self.width-80-25, self.height)];
_textLabel.attributedText = attr;
_textLabel.userInteractionEnabled = YES;
[self addSubview:_textLabel];
}
-(void)agreeAction:(UIButton*)sender{
self.agreeBtn.selected = !self.agreeBtn.selected;
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickAgree:)]) {
[self.delegate didClickAgree:self.agreeBtn.selected];
}
}
@end