Files
featherVoice/QXLive/Mine(音域)/View/每日任务/QXSignInAppView.m
2025-12-13 00:43:57 +08:00

408 lines
15 KiB
Objective-C

//
// QXSignInAppView.m
// QXLive
//
// Created by 启星 on 2025/12/11.
//
#import "QXSignInAppView.h"
#import "QXMineNetwork.h"
@interface QXSignInAppView()
@property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UIImageView *bgImageView;
@property (nonatomic,strong)QXSignInAppSubView *signView1;
@property (nonatomic,strong)QXSignInAppSubView *signView2;
@property (nonatomic,strong)QXSignInAppSubView *signView3;
@property (nonatomic,strong)QXSignInAppSubView *signView4;
@property (nonatomic,strong)QXSignInAppSubView *signView5;
@property (nonatomic,strong)QXSignInAppSubView *signView6;
@property (nonatomic,strong)QXSignInAppSubView *signView7;
@property (nonatomic,strong)NSMutableArray *signViewArray;
@property (nonatomic,strong)UIButton *signBtn;
@property (nonatomic,strong)UIButton *closeBtn;
@property (nonatomic,strong)QXSignAppModel*todayModel;
@property (nonatomic,strong)QXSignInAppResultView *resultView;
@end
@implementation QXSignInAppView
- (instancetype)init
{
self = [super init];
if (self) {
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];
self.bgView = [[UIView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-ScaleWidth(331))/2.0, -self.height, ScaleWidth(331), ScaleWidth(446)+50)];
// self.bgView.backgroundColor = [UIColor whiteColor];
self.bgView.layer.masksToBounds = YES;
self.bgView.layer.cornerRadius = 16;
[self addSubview:self.bgView];
self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"app_sign_task_bg"]];
[self.bgView addSubview:self.bgImageView];
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self.bgView);
make.height.mas_equalTo(ScaleWidth(446));
}];
self.signView1 = [[QXSignInAppSubView alloc] init];
[self.signView1 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView1];
self.signView2 = [[QXSignInAppSubView alloc] init];
[self.signView2 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView2];
self.signView3 = [[QXSignInAppSubView alloc] init];
[self.signView3 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView3];
self.signView4 = [[QXSignInAppSubView alloc] init];
[self.signView4 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView4];
self.signView5 = [[QXSignInAppSubView alloc] init];
[self.signView5 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView5];
self.signView6 = [[QXSignInAppSubView alloc] init];
[self.signView6 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView6];
self.signView7 = [[QXSignInAppSubView alloc] init];
[self.signView7 addRoundedCornersWithRadius:4];
[self.bgView addSubview:self.signView7];
CGFloat leftMargin = ScaleWidth(22);
CGFloat itemSpace = ScaleWidth(6);
CGFloat itemWidth = (self.bgView.width - leftMargin*2 - itemSpace*3)/4;
CGFloat itemHeight = ScaleWidth(88);
[self.signView1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(leftMargin);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
make.top.mas_equalTo(ScaleWidth(168));
}];
[self.signView2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView1);
make.left.equalTo(self.signView1.mas_right).offset(itemSpace);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
}];
[self.signView3 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView1);
make.left.equalTo(self.signView2.mas_right).offset(itemSpace);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
}];
[self.signView4 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView1);
make.left.equalTo(self.signView3.mas_right).offset(itemSpace);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
}];
[self.signView5 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView1.mas_bottom).offset(ScaleWidth(10));
make.left.equalTo(self.signView1);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
}];
[self.signView6 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView5);
make.left.equalTo(self.signView5.mas_right).offset(itemSpace);
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
}];
[self.signView7 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.signView5);
make.left.equalTo(self.signView6.mas_right).offset(itemSpace);
make.right.mas_equalTo(-leftMargin);
make.height.mas_equalTo(itemHeight);
}];
[self.signViewArray addObject:self.signView1];
[self.signViewArray addObject:self.signView2];
[self.signViewArray addObject:self.signView3];
[self.signViewArray addObject:self.signView4];
[self.signViewArray addObject:self.signView5];
[self.signViewArray addObject:self.signView6];
[self.signViewArray addObject:self.signView7];
self.signBtn = [[UIButton alloc] init];
[self.signBtn setBackgroundImage:[UIImage imageNamed:@"sign_app_btn_bg"] forState:(UIControlStateNormal)];
[self.signBtn setBackgroundImage:[UIImage imageWithColor:RGB16(0x999999)] forState:(UIControlStateDisabled)];
[self.signBtn setTitle:@"立即签到" forState:(UIControlStateNormal)];
[self.signBtn setTitle:@"已签到" forState:(UIControlStateDisabled)];
[self.signBtn addTarget:self action:@selector(signAction) forControlEvents:(UIControlEventTouchUpInside)];
self.signBtn.titleLabel.font = [UIFont boldSystemFontOfSize:14];
[self.signBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
[self.signBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateDisabled)];
[self.signBtn addRoundedCornersWithRadius:25];
[self.bgView addSubview:self.signBtn];
[self.signBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(257));
make.height.mas_equalTo(50);
make.centerX.equalTo(self.bgView);
make.bottom.equalTo(self.bgImageView.mas_bottom).offset(-ScaleWidth(20));
}];
self.closeBtn = [[UIButton alloc] init];
[self.closeBtn setBackgroundImage:[UIImage imageNamed:@"home_white_close"] forState:(UIControlStateNormal)];
[self.closeBtn addTarget:self action:@selector(closeAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.bgView addSubview:self.closeBtn];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(35);
make.height.mas_equalTo(35);
make.centerX.equalTo(self.bgView);
make.bottom.equalTo(self.bgView);
}];
[self addSubview:self.resultView];
self.resultView.hidden = YES;
[self.resultView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.equalTo(self.signView1);
make.right.equalTo(self.signView4);
make.bottom.equalTo(self.signBtn);
}];
}
-(void)signAction{
MJWeakSelf
[QXMineNetwork appSignTaskSuccessBlock:^(NSDictionary * _Nonnull dict) {
weakSelf.resultView.hidden = NO;
[weakSelf getSignTaskList];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
-(void)getSignTaskList{
MJWeakSelf
[QXMineNetwork getAppSignTaskListSuccessBlock:^(NSArray<QXSignAppModel *> * _Nonnull list) {
if (list.count == weakSelf.signViewArray.count) {
for (int i = 0;i < list.count; i++) {
QXSignAppModel*md = list[i];
QXSignInAppSubView *signView = weakSelf.signViewArray[i];
signView.model = md;
if (md.is_today.intValue == 1) {
weakSelf.todayModel = md;
weakSelf.resultView.model = weakSelf.todayModel;
if (md.sign_in_status.intValue == 1) {
weakSelf.signBtn.enabled = NO;
}else{
weakSelf.signBtn.enabled = YES;
}
}
}
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
-(void)closeAction{
if (self.cancelBlock) {
self.cancelBlock();
}
[self hide];
}
-(void)showInView:(UIView *)view{
[self getSignTaskList];
[view addSubview:self];
[UIView animateWithDuration:0.3 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.bgView.y = (SCREEN_HEIGHT-ScaleWidth(446))/2.0-60;
} completion:^(BOOL finished) {
}];
}
-(void)hide{
[UIView animateWithDuration:0.3 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.bgView.y = SCREEN_HEIGHT;
} completion:^(BOOL finished) {
[self removeFromSuperview];
}];
}
-(NSMutableArray *)signViewArray{
if (!_signViewArray) {
_signViewArray = [NSMutableArray array];
}
return _signViewArray;
}
-(QXSignInAppResultView *)resultView{
if (!_resultView) {
_resultView = [[QXSignInAppResultView alloc] init];
MJWeakSelf
_resultView.happyBlock = ^{
[weakSelf closeAction];
};
}
return _resultView;
}
@end
@implementation QXSignInAppSubView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)setModel:(QXSignAppModel *)model{
_model = model;
self.dayLabel.text = model.day;
if (model.sign_in_status.intValue == 1) {
self.statusImageView.hidden = NO;
self.statusImageView.image = [UIImage imageNamed:@"app_sign_drawed"];
self.alpha = 0.5;
}else{
self.statusImageView.hidden = YES;
self.alpha = 1;
}
self.giftNameLabel.text = [NSString stringWithFormat:@"%@%@",model.gift_name,model.num];
[self.giftImageView sd_setImageWithURL:[NSURL URLWithString:model.base_image]];
}
-(void)initSubviews{
self.bgImageView = [[UIImageView alloc] init];
self.bgImageView.backgroundColor = RGB16(0xD3FFC8);
[self addSubview:self.bgImageView];
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
self.dayLabel = [[UILabel alloc] init];
self.dayLabel.textColor = RGB16(0xFFC273);
self.dayLabel.font = [UIFont fontWithName:@"YouSheBiaoTiHei" size:32];
[self addSubview:self.dayLabel];
[self.dayLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(-5);
make.left.mas_equalTo(5);
}];
self.dayTitleLabel = [[UILabel alloc] init];
self.dayTitleLabel.textColor = RGB16(0xFFC273);
self.dayTitleLabel.font = [UIFont systemFontOfSize:12];
self.dayTitleLabel.text = @"DAY";
[self addSubview:self.dayTitleLabel];
[self.dayTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).offset(10);
make.left.equalTo(self.dayLabel.mas_right).offset(3);
}];
self.giftImageView = [[UIImageView alloc] init];
self.giftImageView.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:self.giftImageView];
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(38);
make.centerX.centerY.equalTo(self);
}];
self.giftNameLabel = [[UILabel alloc] init];
self.giftNameLabel.textColor = RGB16(0x999999);
self.giftNameLabel.textAlignment = NSTextAlignmentCenter;
self.giftNameLabel.font = [UIFont systemFontOfSize:12];
self.giftNameLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
[self addSubview:self.giftNameLabel];
[self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self);
make.bottom.mas_equalTo(-6);
}];
self.statusImageView = [[UIImageView alloc] init];
[self addSubview:self.statusImageView];
[self.statusImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(ScaleWidth(32));
make.centerX.centerY.equalTo(self);
}];
}
@end
@implementation QXSignInAppResultView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)setModel:(QXSignAppModel *)model{
_model = model;
[self.giftImageView sd_setImageWithURL:[NSURL URLWithString:model.base_image]];
self.giftNameLabel.text = [NSString stringWithFormat:@"签到成功 %@%@",model.gift_name,model.num];
}
-(void)initSubviews{
self.backgroundColor =RGB16(0xffffff);
self.giftImageView = [[UIImageView alloc] init];
self.giftImageView.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:self.giftImageView];
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(80);
make.centerX.equalTo(self);
make.top.mas_equalTo(40);
}];
self.giftNameLabel = [[UILabel alloc] init];
self.giftNameLabel.font = [UIFont systemFontOfSize:14.f];
self.giftNameLabel.textColor = QXConfig.themeColor;
[self addSubview:self.giftNameLabel];
[self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self);
make.top.equalTo(self.giftImageView.mas_bottom).offset(20);
}];
self.happyBtn = [[UIButton alloc] init];
[self.happyBtn setBackgroundImage:[UIImage imageNamed:@"sign_app_btn_bg"] forState:(UIControlStateNormal)];
[self.happyBtn setTitle:@"开心收下" forState:(UIControlStateNormal)];
[self.happyBtn addTarget:self action:@selector(happyAction) forControlEvents:(UIControlEventTouchUpInside)];
self.happyBtn.titleLabel.font = [UIFont boldSystemFontOfSize:14];
[self.happyBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
[self.happyBtn addRoundedCornersWithRadius:25];
[self addSubview:self.happyBtn];
[self.happyBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(257));
make.height.mas_equalTo(50);
make.centerX.equalTo(self);
make.bottom.equalTo(self);
}];
}
-(void)happyAction{
if (self.happyBlock) {
self.happyBlock();
}
}
@end