// // YMReceiveRedPacketView.m // YUMI // // Created by YUMI on 2022/9/2. // #import "XPReceiveRedPacketView.h" #import "XPReceiveRedPacketModel.h" #import "NSObject+MJExtension.h" #import "DJDKMIMOMColor.h" #import #import "NetImageView.h" #import "TTPopUp.h" #import "Api+RedPacket.h" #import "XNDJTDDLoadingTool.h" #import "XPRedPacketResultModel.h" #import "XPOpenRedPacketCell.h" #import "XCCurrentVCStackManager.h" #import "XPRoomViewController.h" #import "RoomHostDelegate.h" #import "XPRoomMiniManager.h" #import "RoomInfoModel.h" #import "XPRedPacketModel.h" #import "YUMIConstant.h" #import "NSArray+Safe.h" #import "CountDownHelper.h" #import "PIReceiveRedPacketSuccessView.h" @interface XPReceiveRedPacketView() @property (nonatomic, strong) XPRedPacketResultModel *resultData; ///背景 @property (nonatomic, strong) UIImageView *bgImageView; ///发送者头像 @property (nonatomic, strong) NetImageView *sendAvatar; ///发送者昵称 @property (nonatomic, strong) UILabel *sendNickLabel; ///收到的祝福语 @property (nonatomic, strong) UILabel *sendWishLabel; ///收到的祝福语背景 @property(nonatomic,strong) UIView *sendWishView; ///抢红包按钮 @property (nonatomic, strong) UIButton *openButton; ///抢红包icon @property(nonatomic,strong) UIImageView *robIcon; ///抢红包类型 @property(nonatomic,strong) UILabel *robView; ///倒计时 @property(nonatomic,strong) UILabel *countDownView; ///倒计时 @property(nonatomic,strong) UILabel *countDownTitleView; ///关闭 @property (nonatomic, strong) UIButton *closeBtn; ///倒计时 @property (nonatomic,strong) CountDownHelper *countDownHelper; @property(nonatomic,assign) BOOL isCountDownEnd; @end @implementation XPReceiveRedPacketView -(void)dealloc{ } - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self initSubViews]; [self initSubViewConstraints]; } return self; } #pragma mark - Private Method - (void)initSubViews { self.isCountDownEnd = YES; [self addSubview:self.alphaView]; [self addSubview:self.bgImageView]; [self.bgImageView addSubview:self.closeBtn]; [self.bgImageView addSubview:self.sendAvatar]; [self.bgImageView addSubview:self.sendNickLabel]; [self.bgImageView addSubview:self.sendWishView]; [self.sendWishView addSubview:self.sendWishLabel]; [self.bgImageView addSubview:self.openButton]; [self.openButton addSubview:self.robIcon]; [self.bgImageView addSubview:self.robView]; [self.bgImageView addSubview:self.countDownView]; [self.bgImageView addSubview:self.countDownTitleView]; [self.bgImageView addSubview:self.robView]; } - (void)initSubViewConstraints { [self.alphaView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(0); }]; [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(kGetScaleWidth(327)); make.height.mas_equalTo(kGetScaleWidth(466)); make.centerX.centerY.mas_equalTo(self); }]; [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(kGetScaleWidth(39)); make.height.width.mas_equalTo(kGetScaleWidth(28)); make.trailing.mas_equalTo(-kGetScaleWidth(8)); }]; [self.sendAvatar mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.bgImageView); make.top.mas_equalTo(self.bgImageView).mas_offset(kGetScaleWidth(94)); make.width.height.mas_equalTo(kGetScaleWidth(65)); }]; [self.sendNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.bgImageView); make.top.mas_equalTo(self.sendAvatar.mas_bottom).mas_offset(kGetScaleWidth(4)); make.height.mas_equalTo(kGetScaleWidth(22)); make.width.mas_equalTo(kGetScaleWidth(200)); }]; [self.sendWishView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_lessThanOrEqualTo(kGetScaleWidth(235)); make.top.equalTo(self.sendNickLabel.mas_bottom).mas_offset(kGetScaleWidth(10)); make.height.mas_equalTo(kGetScaleWidth(35)); make.centerX.mas_equalTo(self.bgImageView); }]; [self.sendWishLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.sendWishView); make.leading.trailing.equalTo(self.sendWishView).inset(kGetScaleWidth(10)); }]; [self.openButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.bgImageView); make.top.equalTo(self.sendWishView.mas_bottom).mas_offset(kGetScaleWidth(14)); make.width.mas_equalTo(kGetScaleWidth(143)); make.height.mas_equalTo(kGetScaleWidth(124)); }]; [self.robIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(kGetScaleWidth(34)); make.width.mas_equalTo(kGetScaleWidth(38)); make.center.mas_equalTo(self.openButton); }]; [self.robView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.sendWishView.mas_bottom).mas_offset(kGetScaleWidth(56)); make.centerX.mas_equalTo(self.bgImageView); make.height.mas_equalTo(kGetScaleWidth(40)); }]; [self.countDownView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.sendWishView.mas_bottom).mas_offset(kGetScaleWidth(51)); make.centerX.mas_equalTo(self.bgImageView); make.height.mas_equalTo(kGetScaleWidth(28)); }]; [self.countDownTitleView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.sendWishView.mas_bottom).mas_offset(kGetScaleWidth(79)); make.centerX.mas_equalTo(self.bgImageView); make.height.mas_equalTo(kGetScaleWidth(17)); }]; } - (void)setReceiveModel:(XPRedPacketModel *)receiveModel { _receiveModel = receiveModel; if(_receiveModel.result != nil){ self.resultData = [XPRedPacketResultModel modelWithDictionary:_receiveModel.result] ; if(self.resultData.redEnvelopeState == RedPacketState_Remain_Zero || self.resultData.redEnvelopeState == RedPacketState_Success){ [self showRedPacketResultViewWithResultData:self.resultData]; return; } } self.sendAvatar.imageUrl = _receiveModel.sendUserAvatar.length > 0 ? receiveModel.sendUserAvatar : receiveModel.userVO.avatar; NSString *nick = _receiveModel.sendUserNick.length > 0 ? _receiveModel.sendUserNick : receiveModel.userVO.nick; if (nick.length > 6) { nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:6]]; } self.sendNickLabel.text = [NSString stringWithFormat:@"%@%@",nick,YMLocalizedString(@"XPReceiveRedPacketView8")] ; self.robView.hidden = YES; self.robIcon.hidden = YES; self.countDownView.hidden = YES; self.countDownTitleView.hidden = YES; if(_receiveModel.kind == RedPacketConditionsType_NO){ self.sendWishLabel.text = _receiveModel.redEnvelopeMessage.length > 0 ? _receiveModel.redEnvelopeMessage :YMLocalizedString(@"XPReceiveRedPacketView9"); if(_receiveModel.validityType == 1){ NSInteger time = [self getTimeDifferenceWithTimestamp:_receiveModel.timestamp / 1000 beginTime:_receiveModel.beginTime / 1000]; if(time > 0){ self.countDownView.hidden = NO; self.countDownTitleView.hidden = NO; self.isCountDownEnd = NO; [self.countDownHelper openCountdownWithTime:(int)time]; }else{ self.robIcon.hidden = NO; } }else{ self.robIcon.hidden = NO; } }else if(_receiveModel.kind == RedPacketConditionsType_Followd){ if(_receiveModel.finish == 1){ self.sendWishLabel.text = YMLocalizedString(@"XPReceiveRedPacketView17"); }else{ NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPReceiveRedPacketView10") attributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:[UIColor whiteColor]}]; [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:UIColorFromRGB(0xFFF87A)} range:NSMakeRange(0, 4)]; self.sendWishLabel.attributedText = textAtt; } NSInteger time = [self getTimeDifferenceWithTimestamp:_receiveModel.timestamp / 1000 beginTime:_receiveModel.beginTime / 1000]; if(time > 0){ self.isCountDownEnd = NO; [self.countDownHelper openCountdownWithTime:(int)time]; if(_receiveModel.finish == 1){ self.countDownView.hidden = NO; self.countDownTitleView.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView13"); } }else{ if(_receiveModel.finish == 1){ self.robIcon.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView16"); } } }else if(_receiveModel.kind == RedPacketConditionsType_Share){ if(_receiveModel.finish == 1){ self.sendWishLabel.text = YMLocalizedString(@"XPReceiveRedPacketView17"); }else{ NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPReceiveRedPacketView11") attributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:[UIColor whiteColor]}]; [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:UIColorFromRGB(0xFFF87A)} range:NSMakeRange(0, 6)]; self.sendWishLabel.attributedText = textAtt; } NSInteger time = [self getTimeDifferenceWithTimestamp:_receiveModel.timestamp / 1000 beginTime:_receiveModel.beginTime / 1000]; if(time > 0){ self.isCountDownEnd = NO; [self.countDownHelper openCountdownWithTime:(int)time]; if(_receiveModel.finish == 1){ self.countDownView.hidden = NO; self.countDownTitleView.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView14"); } }else{ if(_receiveModel.finish == 1){ self.robIcon.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView16"); } } }else if(_receiveModel.kind == RedPacketConditionsType_Scrolling){ if(_receiveModel.finish == 1){ self.sendWishLabel.text = YMLocalizedString(@"XPReceiveRedPacketView17"); }else{ NSString *text = [NSString stringWithFormat:YMLocalizedString(@"XPReceiveRedPacketView12"),_receiveModel.message ?: @""]; NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:text attributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:[UIColor whiteColor]}]; [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(11),NSForegroundColorAttributeName:UIColorFromRGB(0xFFF87A)} range:[text rangeOfString:_receiveModel.message ?:@""]]; self.sendWishLabel.attributedText = textAtt; } NSInteger time = [self getTimeDifferenceWithTimestamp:_receiveModel.timestamp / 1000 beginTime:_receiveModel.beginTime / 1000]; if(time > 0){ [self.countDownHelper openCountdownWithTime:(int)time]; self.isCountDownEnd = NO; if(_receiveModel.finish == 1){ self.countDownView.hidden = NO; self.countDownTitleView.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView15"); } }else{ if(_receiveModel.finish == 1){ self.robIcon.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView16"); } } } } -(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 - action - (void)onOpenButtonClick:(UIButton *)sender { if(self.receiveModel.kind == RedPacketConditionsType_NO){ if(self.receiveModel.validityType == 1 && self.isCountDownEnd == NO){ return; } }else if(self.receiveModel.kind == RedPacketConditionsType_Followd){ if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){ [self removeFromSuperview]; [[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Followd),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @""}]; return; }else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){ [self removeFromSuperview]; [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPReceiveRedPacketView18")]; return; }else if(self.isCountDownEnd == NO && self.receiveModel.finish == 1){ return; } }else if(self.receiveModel.kind == RedPacketConditionsType_Share){ if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){ [self removeFromSuperview]; [[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Share),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @""}]; return; }else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){ [self removeFromSuperview]; [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPReceiveRedPacketView18")]; return; }else if(self.isCountDownEnd == NO && self.receiveModel.finish == 1){ return; } }else if(self.receiveModel.kind == RedPacketConditionsType_Scrolling){ if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){ [self removeFromSuperview]; [[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Scrolling),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @"",@"scrolling":self.receiveModel.message ?: @""}]; return; }else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){ [self removeFromSuperview]; [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPReceiveRedPacketView18")]; return; }else if(self.isCountDownEnd == NO && self.receiveModel.finish == 1){ return; } } if (self.receiveModel.userVO != nil) { [self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId]; } else { //判断是否为房内红包 if ([self.receiveModel.redEnvelopePosition isEqualToString:@"IN_ROOM"]) { //1、房内红包 [self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId]; } else { //2、全服红包 if (self.inAllPacketRoom) {//在全服红包的房间内,直接打开 [self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId]; } else {//不在房内,进入发红包的房间 if ([XPRoomMiniManager shareManager].getRoomInfo) { RoomInfoModel *roomInfo = [XPRoomMiniManager shareManager].getRoomInfo; if (roomInfo.uid == self.receiveModel.roomUid.integerValue) { [XPRoomViewController openMiniRoom:[NSString stringWithFormat:@"%ld", roomInfo.uid] viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC] redEnvelopeId:self.receiveModel.redEnvelopeId]; } else { [XPRoomViewController openRoom:self.receiveModel.roomUid viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]redEnvelopeId:self.receiveModel.redEnvelopeId]; } } else { [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if ([obj isKindOfClass:[XPRoomViewController class]]) { [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; XPRoomViewController * rooomVC = obj; [rooomVC exitRoom]; *stop = YES; } }]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [XPRoomViewController openRoom:self.receiveModel.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC redEnvelopeId:self.receiveModel.redEnvelopeId]; }); } [self removeFromSuperview]; } } } } - (void)openRoomRedPacket:(UIButton *)sender redEnvelopeId:(NSString *)redEnvelopeId { //1.1 开红包动画 CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; transformAnima.toValue = [NSNumber numberWithFloat:M_PI]; transformAnima.duration = 0.3; transformAnima.cumulative = NO; transformAnima.autoreverses = YES; transformAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; sender.layer.zPosition = 5; sender.layer.zPosition = sender.layer.frame.size.width / 2.f; transformAnima.repeatCount = 1000; [sender.layer addAnimation:transformAnima forKey:@"rotationAnimationY"]; sender.enabled = NO; //1.2 网络请求 [Api openRedPacket:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { sender.enabled = YES; if (code != 200) { [XNDJTDDLoadingTool showErrorWithMessage:msg]; return;; } XPRedPacketResultModel *model = [XPRedPacketResultModel modelWithJSON:data.data]; self.resultData = model; [self showRedPacketResultViewWithResultData:model]; // 如果打开红包成功 则记录当前红包状态 NSArray *history = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; NSMutableArray *tempArray = [NSMutableArray arrayWithArray:history]; if (![tempArray containsObject:self.resultData.redEnvelopeVO.redEnvelopeId]) { [tempArray addObject:self.resultData.redEnvelopeVO.redEnvelopeId]; [[NSUserDefaults standardUserDefaults] setObject:tempArray forKey:kRedPacketHistory]; [[NSUserDefaults standardUserDefaults] synchronize]; } } redEnvelopeId:redEnvelopeId]; } ///显示红包结果 - (void)showRedPacketResultViewWithResultData:(XPRedPacketResultModel *)resultData { self.bgImageView.hidden = YES; [[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketResult" object:resultData]; PIReceiveRedPacketSuccessView *successView = [[PIReceiveRedPacketSuccessView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; successView.resultModel = resultData; [self addSubview:successView]; } #pragma mark- CountDownHelperDelegate ///倒计时结束 - (void)onCountdownFinish{ self.isCountDownEnd = YES; self.countDownView.hidden = YES; self.countDownTitleView.hidden = YES; if(self.receiveModel.kind == RedPacketConditionsType_NO){ self.robIcon.hidden = NO; }else { if(_receiveModel.finish == 1){ self.robIcon.hidden = NO; }else{ self.robView.hidden = NO; self.robView.text = YMLocalizedString(@"XPReceiveRedPacketView16"); } } } ///倒计时进行 - (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 - action - (void)onCloseButtonClick:(UIButton *)sender { [self removeFromSuperview]; } #pragma mark - getter - (UIView *)alphaView { if (!_alphaView) { _alphaView = [[UIView alloc] init]; _alphaView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4]; } return _alphaView; } - (UIImageView *)bgImageView { if (!_bgImageView) { _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pi_red_packet_receive_bg"]]; _bgImageView.userInteractionEnabled = YES; } return _bgImageView; } - (NetImageView *)sendAvatar { if (!_sendAvatar) { NetImageConfig *config = [[NetImageConfig alloc]init]; config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; _sendAvatar = [[NetImageView alloc] initWithConfig:config]; _sendAvatar.layer.masksToBounds = YES; _sendAvatar.layer.cornerRadius = kGetScaleWidth(65)/2; } return _sendAvatar; } - (UIView *)sendNickLabel { if (!_sendNickLabel) { UILabel *label = [[UILabel alloc] init]; label.font = kFontMedium(16); label.textColor = [UIColor whiteColor]; label.textAlignment = NSTextAlignmentCenter; _sendNickLabel = label; } return _sendNickLabel; } -(UIView *)sendWishView{ if(!_sendWishView){ _sendWishView = [UIView new]; _sendWishView.backgroundColor = UIColorRGBAlpha(0xF52727, 0.4); _sendWishView.layer.cornerRadius = kGetScaleWidth(8); _sendWishView.layer.masksToBounds = YES; _sendWishView.layer.borderWidth = 1; _sendWishView.layer.borderColor = [UIColor whiteColor].CGColor; } return _sendWishView; } - (UILabel *)sendWishLabel { if (!_sendWishLabel) { UILabel *label = [[UILabel alloc] init]; label.textAlignment = NSTextAlignmentCenter; _sendWishLabel = label; _sendWishLabel.textColor = [UIColor whiteColor]; _sendWishLabel.font = kFontRegular(11); _sendWishLabel.adjustsFontSizeToFitWidth = YES; } return _sendWishLabel; } - (UIButton *)openButton { if (!_openButton) { _openButton = [[UIButton alloc] init]; [_openButton setImage:[UIImage imageNamed:@"pi_red_packet_receive_open"] forState:UIControlStateNormal]; [_openButton addTarget:self action:@selector(onOpenButtonClick:) forControlEvents:UIControlEventTouchUpInside]; } return _openButton; } - (UIButton *)closeBtn { if (!_closeBtn) { _closeBtn = [[UIButton alloc] init]; [_closeBtn setImage:[UIImage imageNamed:@"pi_red_packet_receive_colse"] forState:UIControlStateNormal]; [_closeBtn addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; } return _closeBtn; } - (UIImageView *)robIcon{ if(!_robIcon){ _robIcon = [UIImageView new]; _robIcon.image = kImage(@"pi_red_packet_receive_rob"); } return _robIcon; } -(UILabel *)robView{ if(!_robView){ _robView = [UILabel labelInitWithText:YMLocalizedString(@"XPReceiveRedPacketView7") font:kFontMedium(14) textColor:UIColorFromRGB(0xBF461F)]; _robView.textAlignment = NSTextAlignmentCenter; _robView.numberOfLines = 2; } return _robView; } - (CountDownHelper *)countDownHelper{ if (!_countDownHelper){ _countDownHelper = [[CountDownHelper alloc]init]; _countDownHelper.delegate = self; } return _countDownHelper; } - (UILabel *)countDownTitleView{ if(!_countDownTitleView){ _countDownTitleView = [UILabel labelInitWithText:YMLocalizedString(@"XPReceiveRedPacketView6") font:kFontMedium(12) textColor:UIColorFromRGB(0xBF461F)]; _countDownTitleView.textAlignment = NSTextAlignmentCenter; } return _countDownTitleView; } - (UILabel *)countDownView{ if(!_countDownView){ _countDownView = [UILabel labelInitWithText:@"00:00" font:kFontRegular(20) textColor:UIColorFromRGB(0xBF461F)]; _countDownView.textAlignment = NSTextAlignmentCenter; } return _countDownView; } @end