210 lines
7.5 KiB
Objective-C
210 lines
7.5 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.isCountDownEnd = YES;
|
|
[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){
|
|
if(_redPacketModel.finish == 1){
|
|
self.countDownView.hidden = NO;
|
|
|
|
[self.countDownHelper openCountdownWithTime:(int)time];
|
|
}else{
|
|
self.robBtn.hidden = NO;
|
|
}
|
|
}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){
|
|
if(_redPacketModel.finish == 1){
|
|
self.countDownView.hidden = NO;
|
|
|
|
[self.countDownHelper openCountdownWithTime:(int)time];
|
|
}else{
|
|
self.robBtn.hidden = NO;
|
|
}
|
|
}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){
|
|
if(_redPacketModel.finish == 1){
|
|
self.countDownView.hidden = NO;
|
|
|
|
[self.countDownHelper openCountdownWithTime:(int)time];
|
|
}else{
|
|
self.robBtn.hidden = NO;
|
|
}
|
|
}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;
|
|
self.isCountDownEnd = YES;
|
|
}
|
|
///倒计时进行
|
|
- (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];
|
|
self.isCountDownEnd = NO;
|
|
}
|
|
#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
|