408 lines
15 KiB
Objective-C
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
|