Files
peko-ios/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomEnterRedPacketView.m
2023-10-27 18:28:50 +08:00

188 lines
6.9 KiB
Objective-C

//
// PIRoomEnterRedPacketView.m
// YuMi
//
// Created by duoban on 2023/10/20.
//
#import "PIRoomEnterRedPacketView.h"
#import "CountDownHelper.h"
@interface PIRoomEnterRedPacketView ()<CountDownHelperDelegate>
@property(nonatomic,strong) UIImageView *bgImageView;
@property(nonatomic,strong) UIButton *robBtn;
///倒计时
@property(nonatomic,strong) UILabel *countDownView;
///倒计时
@property (nonatomic,strong) CountDownHelper *countDownHelper;
///红点
@property(nonatomic,strong) UILabel *redPoionNumView;
@property(nonatomic,strong) UIView *redPoionView;
@end
@implementation PIRoomEnterRedPacketView
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
[self installUI];
[self installConstraints];
}
return self;
}
-(void)installUI{
[self addSubview:self.bgImageView];
[self.bgImageView addSubview:self.robBtn];
[self.bgImageView addSubview:self.countDownView];
[self.bgImageView addSubview:self.redPoionView];
[self.redPoionView addSubview:self.redPoionNumView];
}
-(void)installConstraints{
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
[self.robBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(kGetScaleWidth(36));
make.height.mas_equalTo(kGetScaleWidth(15));
make.bottom.mas_equalTo(-kGetScaleWidth(10));
make.centerX.equalTo(self.bgImageView);
}];
[self.countDownView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.robBtn);
}];
[self.redPoionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(kGetScaleWidth(12));
make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(12));
make.bottom.equalTo(self.robBtn.mas_top).mas_offset(-kGetScaleWidth(17));
make.trailing.equalTo(self.robBtn.mas_trailing).mas_equalTo(kGetScaleWidth(6));
}];
[self.redPoionNumView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.redPoionView);
make.leading.trailing.equalTo(self.redPoionView).inset(kGetScaleWidth(3));
}];
}
-(void)setPi_redNum:(NSString *)pi_redNum{
_pi_redNum = pi_redNum;
_redPoionNumView.text = _pi_redNum.integerValue > 99 ? @"99+" : _pi_redNum;
}
-(void)setRedPacketModel:(XPRedPacketModel *)redPacketModel{
_redPacketModel = redPacketModel;
self.countDownView.hidden = YES;
self.robBtn.hidden = YES;
if(_redPacketModel.kind == RedPacketConditionsType_NO){
if(_redPacketModel.validityType == 1){
NSInteger time = [self getTimeDifferenceWithTimestamp:_redPacketModel.timestamp / 1000 beginTime:_redPacketModel.beginTime / 1000];
if(time > 0){
self.countDownView.hidden = NO;
[self.countDownHelper openCountdownWithTime:(int)time];
}else{
self.robBtn.hidden = NO;
}
}else{
self.robBtn.hidden = NO;
}
}else if(_redPacketModel.kind == RedPacketConditionsType_Followd){
NSInteger time = [self getTimeDifferenceWithTimestamp:_redPacketModel.timestamp / 1000 beginTime:_redPacketModel.beginTime / 1000];
if(time > 0){
self.countDownView.hidden = NO;
[self.countDownHelper openCountdownWithTime:(int)time];
}else{
self.robBtn.hidden = NO;
}
}else if(_redPacketModel.kind == RedPacketConditionsType_Share){
NSInteger time = [self getTimeDifferenceWithTimestamp:_redPacketModel.timestamp / 1000 beginTime:_redPacketModel.beginTime / 1000];
if(time > 0){
self.countDownView.hidden = NO;
[self.countDownHelper openCountdownWithTime:(int)time];
}else{
self.robBtn.hidden = NO;
}
}else if(_redPacketModel.kind == RedPacketConditionsType_Scrolling){
NSInteger time = [self getTimeDifferenceWithTimestamp:_redPacketModel.timestamp / 1000 beginTime:_redPacketModel.beginTime / 1000];
if(time > 0){
self.countDownView.hidden = NO;
[self.countDownHelper openCountdownWithTime:(int)time];
}else{
self.robBtn.hidden = NO;
}
}
}
-(NSInteger)getTimeDifferenceWithTimestamp:(long)timestamp beginTime:(long)beginTime {
NSString *time1 = [NSDate timestampSwitchTime:(NSInteger)timestamp formatter:@"YYYY-MM-dd hh:mm:ss"];
NSString *time2 = [NSDate timestampSwitchTime:(NSInteger)beginTime formatter:@"YYYY-MM-dd hh:mm:ss"];
NSInteger second = [NSDate pleaseInsertStarTimeo:time1 andInsertEndTime:time2];
return second;
}
#pragma mark- CountDownHelperDelegate
///倒计时结束
- (void)onCountdownFinish{
self.countDownView.hidden = YES;
self.robBtn.hidden = NO;
}
///倒计时进行
- (void)onCountdownOpen:(int)time{
NSInteger seconds = time;
int minutes = (seconds)%3600/60;
int second = (seconds)%60;
self.countDownView.text = [NSString stringWithFormat:@"%02d:%02d",minutes,second];
}
#pragma mark - 懒加载
- (UIImageView *)bgImageView{
if(!_bgImageView){
_bgImageView = [UIImageView new];
_bgImageView.image = kImage(@"pi_red_packet_enter_bg");
_bgImageView.userInteractionEnabled = YES;
}
return _bgImageView;
}
-(UIButton *)robBtn{
if(!_robBtn){
_robBtn = [UIButton new];
[_robBtn setBackgroundImage:kImage(@"pi_red_packet_enter_rob_icon") forState:UIControlStateNormal];
[_robBtn setTitle:YMLocalizedString(@"PIRoomEnterRedPacketView0") forState:UIControlStateNormal];
[_robBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_robBtn.titleLabel.font = kFontMedium(9);
}
return _robBtn;
}
- (UILabel *)countDownView{
if(!_countDownView){
_countDownView = [UILabel labelInitWithText:@"00:00" font:kFontSemibold(10) textColor:[UIColor whiteColor]];
_countDownView.textAlignment = NSTextAlignmentCenter;
_countDownView.layer.cornerRadius = kGetScaleWidth(15)/2;
_countDownView.layer.masksToBounds = YES;
_countDownView.backgroundColor = UIColorRGBAlpha(0x292929, 0.6);
}
return _countDownView;
}
- (CountDownHelper *)countDownHelper{
if (!_countDownHelper){
_countDownHelper = [[CountDownHelper alloc]init];
_countDownHelper.delegate = self;
}
return _countDownHelper;
}
- (UIView *)redPoionView{
if(!_redPoionView){
_redPoionView = [UIView new];
_redPoionView.backgroundColor = UIColorFromRGB(0xF44646);
_redPoionView.layer.cornerRadius = kGetScaleWidth(12)/2;
_redPoionView.layer.masksToBounds = YES;
}
return _redPoionView;
}
- (UILabel *)redPoionNumView{
if(!_redPoionNumView){
_redPoionNumView = [UILabel labelInitWithText:@"0" font:kFontMedium(9) textColor:[UIColor whiteColor]];
_redPoionNumView.textAlignment = NSTextAlignmentCenter;
}
return _redPoionNumView;
}
@end