This commit is contained in:
启星
2025-10-15 17:21:09 +08:00
parent 3ba569dfa3
commit 2b477e8912
51 changed files with 1306 additions and 249 deletions

View File

@@ -7,10 +7,13 @@
#import "QXRedBagDrawView.h"
#import "QXRedBagRecordViewController.h"
#import "QXMineNetwork.h"
@class QXRedBagTimeDownView;
@interface QXRedBagDrawView()
@property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UIImageView *bgImageView;
@property (nonatomic,strong)UIImageView *pwdImageView;
@property (nonatomic,strong)UIImageView *userHeaderImageView;
@property (nonatomic,strong)UILabel *userNameLabel;
@property (nonatomic,strong)UILabel *remarkLabel;
@@ -29,6 +32,8 @@
@property (nonatomic,strong)UILabel *pwdTitleLable;
///
@property (nonatomic,strong)UILabel *bottomLabel;
@property (nonatomic,assign)QXRedBagDrawType drawType;
@end
@implementation QXRedBagDrawView
- (instancetype)init
@@ -42,6 +47,7 @@
}
-(void)initSubviews{
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
self.bgView = [[UIView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-345)/2, (SCREEN_HEIGHT-454)/2, 345, 454)];
[self addSubview:self.bgView];
@@ -49,6 +55,12 @@
self.bgImageView.image = [UIImage imageNamed:@"room_draw_redbag_bg"];
[self.bgView addSubview:self.bgImageView];
self.pwdImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"red_packet_pwd_icon"]];
self.pwdImageView.frame = CGRectMake(0, 0, 119, 41);
self.pwdImageView.hidden = YES;
[self.bgView addSubview:self.pwdImageView];
self.closeBtn = [[UIButton alloc] init];
[self.closeBtn setImage:[UIImage imageNamed:@"room_redbag_close"] forState:(UIControlStateNormal)];
[self.closeBtn addTarget:self action:@selector(closeAction) forControlEvents:(UIControlEventTouchUpInside)];
@@ -122,13 +134,13 @@
@weakify(self)
self.timeDownView.btnBlcok = ^(QXRedBagDrawType type) {
@strongify(self);
if (type == QXRedBagDrawTypePwdCollect) {
if (type == QXRedBagDrawTypeCollect) {
///
[self setType:(QXRedBagDrawTypeOpen)];
[self collectRoom];
return;
}
if (self.toInputPwdBlock) {
self.toInputPwdBlock(@"傻狗涛来了,大家都让一让",self.redpacketModel);
self.toInputPwdBlock(self.redpacketModel.password,self.redpacketModel);
}
[self hide];
};
@@ -162,7 +174,7 @@
}];
self.drawTitleLabel = [[UILabel alloc] init];
self.drawTitleLabel.text = @"口令红包参与条件";
self.drawTitleLabel.text = @"红包参与条件";
self.drawTitleLabel.textColor = RGB16(0xffffff);
self.drawTitleLabel.textAlignment = NSTextAlignmentCenter;
self.drawTitleLabel.font = [UIFont systemFontOfSize:12];
@@ -197,6 +209,22 @@
make.centerX.equalTo(self.bgView);;
}];
}
-(void)collectRoom{
MJWeakSelf
[QXMineNetwork roomCollectWithType:@"1" room_id:self.room_id successBlock:^(NSDictionary * _Nonnull dict) {
if (weakSelf.collectRoomBlock) {
weakSelf.collectRoomBlock();
}
weakSelf.isCollectedRoom = YES;
if ([weakSelf.redpacketModel canOpenNow]) {
[weakSelf setType:(QXRedBagDrawTypeOpen)];
}else{
[weakSelf setType:QXRedBagDrawTypeTimeDown];
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
/**
///
QXRedBagDrawTypeOpen = 0,
@@ -213,13 +241,68 @@
///
QXRedBagDrawTypePwdCollect,
*/
-(void)setIsCollectedRoom:(BOOL)isCollectedRoom{
_isCollectedRoom = isCollectedRoom;
}
-(void)setRedpacketModel:(QXRedPacketModel *)redpacketModel{
_redpacketModel = redpacketModel;
[self setType:[self getDrawTypeWithRedpacktModel:redpacketModel]];
self.remarkLabel.text = redpacketModel.remark;
[self.userHeaderImageView sd_setImageWithURL:[NSURL URLWithString:redpacketModel.avatar]];
self.userNameLabel.text = [NSString stringWithFormat:@"%@的红包",redpacketModel.nickname];
self.commentTitleLabel.text = [NSString stringWithFormat:@"发送评论%@",redpacketModel.password];
if (redpacketModel.type.intValue == 2) {
self.pwdImageView.hidden = NO;
}else{
self.pwdImageView.hidden = YES;
}
if (self.drawType == QXRedBagDrawTypeOpen) {
self.pwdBgView.hidden = YES;
self.bottomLabel.hidden = YES;
}else{
self.pwdBgView.hidden = NO;
self.bottomLabel.hidden = NO;
if (redpacketModel.type.intValue == 2) {
self.commentTitleLabel.hidden = NO;
}else{
self.commentTitleLabel.hidden = YES;
}
if (redpacketModel.conditions.intValue == 0) {
self.pwdTitleLable.hidden = YES;
self.drawTitleLabel.hidden = YES;
}else{
self.pwdTitleLable.hidden = NO;
self.drawTitleLabel.hidden = NO;
if ([redpacketModel.conditions isEqualToString:@"1,2"]) {
self.pwdTitleLable.text = @"收藏房间,仅麦上用户";
}else if ([redpacketModel.conditions isEqualToString:@"1"]) {
self.pwdTitleLable.text = @"收藏房间";
}else if ([redpacketModel.conditions isEqualToString:@"1"]) {
self.pwdTitleLable.text = @"仅麦上用户";
}
}
}
}
-(void)setIsFromToComment:(BOOL)isFromToComment{
_isFromToComment = isFromToComment;
}
-(void)setNeedTime:(long)needTime{
_needTime = needTime;
NSInteger min = (needTime % 3600) / 60;
NSInteger second = needTime % 60;
self.timeDownView.timeLabel.text = [NSString stringWithFormat:@"%02ld:%02ld后开启红包",min,(long)second];
}
-(void)changeViewType:(QXRedBagDrawType)type{
[self setType:type];
}
-(void)setType:(QXRedBagDrawType)type{
_type = type;
_drawType = type;
switch (type) {
case QXRedBagDrawTypeOpen:{
self.openBtn.hidden = NO;
self.remarkLabel.text = @"恭喜发财,大吉大利";
self.remarkLabel.text = self.redpacketModel.remark;
self.recordBtn.hidden = YES;
self.timeDownView.hidden = YES;
self.bottomLabel.hidden = YES;
@@ -237,53 +320,34 @@
break;
case QXRedBagDrawTypeCollect:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"恭喜发财,大吉大利";
self.remarkLabel.text = self.redpacketModel.remark;
self.recordBtn.hidden = YES;
self.timeDownView.type = QXRedBagDrawTypeCollect;
self.timeDownView.hidden = NO;
self.bottomLabel.hidden = NO;
self.pwdBgView.hidden = YES;
[self performSelector:@selector(changeType) afterDelay:2];
self.pwdBgView.hidden = NO;
self.commentTitleLabel.hidden = YES;
self.pwdTitleLable.text= @"收藏房间";
}
break;
case QXRedBagDrawTypeTimeDown:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"恭喜发财,大吉大利";
self.remarkLabel.text = self.redpacketModel.remark;
self.recordBtn.hidden = YES;
self.timeDownView.type = QXRedBagDrawTypeTimeDown;
self.timeDownView.hidden = NO;
self.bottomLabel.hidden = NO;
self.pwdBgView.hidden = YES;
[self performSelector:@selector(changeType) afterDelay:2];
}
break;
case QXRedBagDrawTypePwdSend:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"恭喜发财,大吉大利";
self.remarkLabel.text = self.redpacketModel.remark;
self.recordBtn.hidden = YES;
self.timeDownView.type = QXRedBagDrawTypePwdSend;
self.timeDownView.hidden = NO;
self.pwdBgView.hidden = NO;
self.pwdTitleLable.hidden = YES;
}
break;
case QXRedBagDrawTypePwdTimeDown:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"恭喜发财,大吉大利";
self.recordBtn.hidden = YES;
self.timeDownView.type = QXRedBagDrawTypePwdTimeDown;
self.timeDownView.hidden = NO;
self.bottomLabel.hidden = NO;
self.pwdBgView.hidden = YES;
[self performSelector:@selector(changeType) afterDelay:2];
}
break;
case QXRedBagDrawTypePwdCollect:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"手慢了,红包被领完了";
self.recordBtn.hidden = NO;
}
break;
case QXRedBagDrawTypePwdAllTask:{
self.openBtn.hidden = YES;
self.remarkLabel.text = @"手慢了,红包被领完了";
@@ -294,41 +358,59 @@
break;
}
}
-(void)changeType{
[self setType:QXRedBagDrawTypeOpen];
}
#pragma mark - action
-(void)closeAction{
[self hide];
}
-(void)openAction{
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI];
//
rotationAnimation.duration = 0.5;
rotationAnimation.cumulative = YES;
rotationAnimation.removedOnCompletion = NO;
//MAXFLOAT
rotationAnimation.repeatCount = MAXFLOAT;
[self.openBtn.layer addAnimation:rotationAnimation forKey:@"openRedBagAnimate"];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.openBtn.layer removeAnimationForKey:@"openRedBagAnimate"];
BOOL isDrawed = NO;
if (isDrawed) {
MJWeakSelf
[QXMineNetwork drawRedpacketWithRedpacketId:self.redpacketModel.redpacket_id successBlock:^(NSString * _Nonnull code) {
if (code.intValue == 1) {
weakSelf.redpacketModel.is_qiang = @"1";
QXRedBagRecordViewController *vc = [[QXRedBagRecordViewController alloc] init];
vc.redbagId = @"";
[self.viewController.navigationController pushViewController:vc animated:YES];
[self hide];
vc.redbagId = weakSelf.redpacketModel.redpacket_id;
[weakSelf.viewController.navigationController pushViewController:vc animated:YES];
[weakSelf hide];
}else if (code.intValue == 2){
showToast(@"您已抢过该红包");
QXRedBagRecordViewController *vc = [[QXRedBagRecordViewController alloc] init];
vc.redbagId = weakSelf.redpacketModel.redpacket_id;
[weakSelf.viewController.navigationController pushViewController:vc animated:YES];
[weakSelf hide];
}else{
[self setType:QXRedBagDrawTypeFinished];
[weakSelf setType:QXRedBagDrawTypeFinished];
}
});
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
// CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
// //
// rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI];
// //
// rotationAnimation.duration = 0.5;
// rotationAnimation.cumulative = YES;
// rotationAnimation.removedOnCompletion = NO;
// //MAXFLOAT
// rotationAnimation.repeatCount = MAXFLOAT;
// [self.openBtn.layer addAnimation:rotationAnimation forKey:@"openRedBagAnimate"];
//
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// [self.openBtn.layer removeAnimationForKey:@"openRedBagAnimate"];
//
// BOOL isDrawed = NO;
// if (isDrawed) {
// QXRedBagRecordViewController *vc = [[QXRedBagRecordViewController alloc] init];
// vc.redbagId = @"";
// [self.viewController.navigationController pushViewController:vc animated:YES];
// [self hide];
// }else{
// [self setType:QXRedBagDrawTypeFinished];
// }
//
// });
}
-(void)recordAction{
QXRedBagRecordViewController *vc = [[QXRedBagRecordViewController alloc] init];
@@ -336,7 +418,38 @@
[self.viewController.navigationController pushViewController:vc animated:YES];
[self hide];
}
-(QXRedBagDrawType)getDrawTypeWithRedpacktModel:(QXRedPacketModel*)model{
self.drawType = QXRedBagDrawTypeOpen;
if (model.type.intValue == 1) {
//
self.drawType = QXRedBagDrawTypeOpen;
///
if (model.countdown.intValue > 0) {
if ([model remainingTime]>0) {
self.drawType = QXRedBagDrawTypeTimeDown;
}
}
///
if ([model.conditions containsString:@"1"] && !self.isCollectedRoom){
self.drawType = QXRedBagDrawTypeCollect;
}
}else{
//
self.drawType = QXRedBagDrawTypePwdSend;
if (self.isFromToComment) {
if ([model.conditions containsString:@"1"] && !self.isCollectedRoom){
self.drawType = QXRedBagDrawTypeCollect;
}else{
if ([self.redpacketModel canOpenNow]) {
[self setType:(QXRedBagDrawTypeOpen)];
}else{
[self setType:QXRedBagDrawTypeTimeDown];
}
}
}
}
return self.drawType;
}
-(void)showInView:(UIView *)view{
self.bgView.y = -SCREEN_HEIGHT;
[view addSubview:self];
@@ -348,6 +461,7 @@
}
-(void)hide{
self.redpacketModel = nil;
[UIView animateWithDuration:0.3 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.bgView.y = SCREEN_HEIGHT;
} completion:^(BOOL finished) {
@@ -374,8 +488,7 @@
self.timeLabel.text = @"收藏房间抢红包";
}
break;
case QXRedBagDrawTypeTimeDown:
case QXRedBagDrawTypePwdTimeDown:{
case QXRedBagDrawTypeTimeDown:{
self.timeLabel.text = @"00:00后开启红包";
}
break;
@@ -383,11 +496,6 @@
self.timeLabel.text = @"发送评论抢红包";
}
break;
case QXRedBagDrawTypePwdCollect:{
self.timeLabel.text = @"收藏房间抢红包";
}
break;
case QXRedBagDrawTypePwdAllTask:{
self.timeLabel.text = @"完成任务抢红包";
}
@@ -398,7 +506,7 @@
}
-(void)btnClick{
if (self.type == QXRedBagDrawTypePwdSend || self.type == QXRedBagDrawTypePwdCollect) {
if (self.type == QXRedBagDrawTypePwdSend || self.type == QXRedBagDrawTypeCollect) {
if (self.btnBlcok) {
self.btnBlcok(self.type);
}