Files
midi_ios/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatPKView.m
2025-09-22 14:58:13 +08:00

626 lines
24 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// QXRoomSeatPKView.m
// QXLive
//
// Created by 启星 on 2025/7/2.
//
#import "QXRoomSeatPKView.h"
#import "UIColor+QX.h"
#import "QXRoomPKTimeSetView.h"
#import "QXTimer.h"
#import "QXMineNetwork.h"
#import "QXRoomPKResultView.h"
#import "QXRoomMessageManager.h"
#import "QXAgoraEngineEx.h"
#import "QXAgoraEngine.h"
#import "QXAlertView.h"
@interface QXRoomSeatPKView()<QXRoomSeatDelegate>
@property (nonatomic,strong)UIButton *startBtn;
@property (nonatomic,strong)UIButton *endBtn;
@property (nonatomic,strong)UIImageView *topImageView;
@property (nonatomic,strong)UIButton *pkTimeBtn;
@property (nonatomic,strong)UIImageView *leftResult;
@property (nonatomic,strong)UIImageView *rightResult;
@property (nonatomic,strong)UIImageView *bgImageView;
@property (nonatomic,strong)UILabel *titleLabel;
@property (nonatomic,strong)QXRoomSeatPKProgress *progressView;
@property (nonatomic,strong)QXRoomSeatPKSubView *leftRoomView;
@property (nonatomic,strong)QXPKIconView *pkIconView;
@property (nonatomic,strong)QXRoomSeatPKSubView *rightRoomView;
@property (nonatomic,strong)QXRoomSeatTypeNormalView *leftSeatView;
@property (nonatomic,strong)QXRoomSeatTypeNormalView *rightSeatView;
@property (nonatomic,strong)QXRoomPKTimeSetView *timeSetView;
@property (nonatomic,strong)QXTimer *timer;
@property (nonatomic,assign)long startTime;
@property (nonatomic,strong)QXRoomPKResultView *resultView;
@property (nonatomic,strong)UIButton *muteRemoteBtn;
@property (nonatomic,strong)NSString *pk_userId;
@property (nonatomic,strong)QXAlertView *alertView;
@property (nonatomic,assign)BOOL isDefeat;
@end
@implementation QXRoomSeatPKView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.startBtn = [[UIButton alloc] init];
self.startBtn.hidden = YES;
self.startBtn.backgroundColor = QXConfig.themeColor;
[self.startBtn addRoundedCornersWithRadius:12];
[self.startBtn setTitle:@"开始" forState:(UIControlStateNormal)];
[self.startBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
[self.startBtn addTarget:self action:@selector(startAction) forControlEvents:(UIControlEventTouchUpInside)];
self.startBtn.titleLabel.font = [UIFont systemFontOfSize:12];
[self addSubview:self.startBtn];
[self.startBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(7);
make.width.mas_equalTo(46);
make.height.mas_equalTo(24);
make.top.equalTo(self);
}];
self.endBtn = [[UIButton alloc] init];
self.endBtn.hidden = YES;
self.endBtn.backgroundColor = RGB16(0x333333);
[self.endBtn addRoundedCornersWithRadius:12];
[self.endBtn setTitle:@"结束" forState:(UIControlStateNormal)];
[self.endBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
self.endBtn.titleLabel.font = [UIFont systemFontOfSize:12];
[self.endBtn addTarget:self action:@selector(endAction) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:self.endBtn];
[self.endBtn mas_makeConstraints:^(MASConstraintMaker *make) {
// [make.left.equalTo(self.startBtn.mas_right).offset(10) priorityHigh];
// [make.left.mas_equalTo(7) priorityLow];
make.left.equalTo(self.startBtn.mas_right).offset(10);
make.width.mas_equalTo(46);
make.height.mas_equalTo(24);
make.top.equalTo(self);
}];
self.topImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_pk_top_bg"]];
[self addSubview:self.topImageView];
[self.topImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.startBtn.mas_bottom);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(122), ScaleWidth(26)));
make.centerX.equalTo(self);
}];
self.pkTimeBtn = [[UIButton alloc] init];
[self.pkTimeBtn setTitle:@"未开始" forState:(UIControlStateNormal)];
self.pkTimeBtn.titleLabel.font = [UIFont systemFontOfSize:12];
[self.pkTimeBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
[self addSubview:self.pkTimeBtn];
[self.pkTimeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self.topImageView);
}];
self.leftResult.hidden = YES;
[self addSubview:self.leftResult];
[self.leftResult mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.topImageView.mas_left);
make.width.mas_equalTo(ScaleWidth(15));
make.height.mas_equalTo(ScaleWidth(17));
make.centerY.equalTo(self.topImageView);
}];
self.rightResult.hidden = YES;
[self addSubview:self.rightResult];
[self.rightResult mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.topImageView.mas_right);
make.width.mas_equalTo(ScaleWidth(15));
make.height.mas_equalTo(ScaleWidth(17));
make.centerY.equalTo(self.topImageView);
}];
self.leftRoomView = [[QXRoomSeatPKSubView alloc] initWithMyRoom:YES];
[self addSubview:self.leftRoomView];
[self.leftRoomView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(7);
make.width.mas_equalTo((SCREEN_WIDTH-7*2-4)/2);
make.bottom.equalTo(self);
make.top.equalTo(self.startBtn.mas_bottom).offset(8);
}];
self.rightRoomView = [[QXRoomSeatPKSubView alloc] initWithMyRoom:NO];
[self addSubview:self.rightRoomView];
[self.rightRoomView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-7);
make.width.mas_equalTo((SCREEN_WIDTH-7*2-4)/2);
make.bottom.equalTo(self);
make.top.equalTo(self.leftRoomView);
}];
self.progressView = [[QXRoomSeatPKProgress alloc] init];
[self.progressView addRoundedCornersWithRadius:ScaleWidth(8)];
[self addSubview:self.progressView];
[self.progressView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.leftRoomView);
make.right.equalTo(self.rightRoomView);
make.top.equalTo(self.leftRoomView).offset(18);
make.height.mas_equalTo(ScaleWidth(16));
}];
self.pkIconView = [[QXPKIconView alloc] init];
[self addSubview:self.pkIconView];
[self.pkIconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(ScaleWidth(72), ScaleWidth(72)));
make.centerX.centerY.equalTo(self);
}];
self.leftSeatView = [[QXRoomSeatTypeNormalView alloc] init];
self.leftSeatView.isPKMyRoom = YES;
self.leftSeatView.delegate = self;
[self addSubview:self.leftSeatView];
[self.leftSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(7);
make.top.equalTo(self.progressView.mas_bottom);
make.bottom.equalTo(self);
make.width.mas_equalTo((SCREEN_WIDTH-7*2-4)/2);
}];
self.rightSeatView = [[QXRoomSeatTypeNormalView alloc] init];
self.rightSeatView.isPKOtherRoom = YES;
self.rightSeatView.delegate = self;
[self addSubview:self.rightSeatView];
[self.rightSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-7);
make.top.equalTo(self.progressView.mas_bottom);
make.bottom.equalTo(self);
make.width.mas_equalTo((SCREEN_WIDTH-7*2-4)/2);
}];
self.muteRemoteBtn = [[UIButton alloc] init];
[self.muteRemoteBtn setImage:[UIImage imageNamed:@"room_event_mute_audio_sel"] forState:(UIControlStateNormal)];
[self.muteRemoteBtn setImage:[UIImage imageNamed:@"room_event_mute_audio_nor"] forState:(UIControlStateSelected)];
[self.muteRemoteBtn addTarget:self action:@selector(muteRemoteAction:) forControlEvents:(UIControlEventTouchUpInside)];
self.muteRemoteBtn.hidden = YES;
[self addSubview:self.muteRemoteBtn];
[self.muteRemoteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.rightRoomView).offset(20+ScaleWidth(50));
make.top.equalTo(self.progressView.mas_bottom);
make.size.mas_equalTo(CGSizeMake(30, 30));
}];
}
-(void)setRoomModel:(QXRoomModel *)roomModel{
_roomModel = roomModel;
[self.progressView setLeftProgressWithLeftValue:self.roomModel.pk_info.my_room_value rightValue:self.roomModel.pk_info.pk_room_value];
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
long long milliseconds = (long long)(timeInterval);
self.startTime = self.roomModel.pk_info.pk_end_times.longLongValue - milliseconds;
[self startTimerWithPart:roomModel.pk_info.pk_part];;
self.leftSeatView.roomModel = roomModel;
[self configBtn];
if (roomModel.pk_info.my_room_value.longLongValue > roomModel.pk_info.pk_room_value.longLongValue) {
self.leftResult.image = [UIImage imageNamed:@"room_pk_victory"];
self.rightResult.image = [UIImage imageNamed:@"room_pk_defeated"];
}else if (roomModel.pk_info.my_room_value.longLongValue < roomModel.pk_info.pk_room_value.longLongValue) {
// 失败
self.resultView.type = QXRoomPKResulttTypeDefeated;
self.leftResult.image = [UIImage imageNamed:@"room_pk_defeated"];
}else{
self.leftResult.image = [UIImage imageNamed:@"room_pk_tie"];
self.rightResult.image = [UIImage imageNamed:@"room_pk_tie"];
}
}
-(void)configBtn{
if (self.roomModel.pk_info.pk_part.intValue == 2) {
if ([self.roomModel.pk_info.invite_pk_user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id] && self.leftSeatView.myPitNumber == 9) {
self.startBtn.hidden = NO;
}else{
self.startBtn.hidden = YES;
}
if (self.leftSeatView.myPitNumber == 9) {
self.endBtn.hidden = NO;
}else{
self.endBtn.hidden = YES;
}
}else if (self.roomModel.pk_info.pk_part.intValue == 3) {
if (self.leftSeatView.myPitNumber == 9) {
self.endBtn.hidden = NO;
}else{
self.endBtn.hidden = YES;
}
self.startBtn.hidden = YES;
}else if (self.roomModel.pk_info.pk_part.intValue == 4) {
if (self.leftSeatView.myPitNumber == 9) {
self.endBtn.hidden = NO;
}else{
self.endBtn.hidden = YES;
}
self.startBtn.hidden = YES;
}
if (self.leftSeatView.myPitNumber == 9) {
self.muteRemoteBtn.hidden = NO;
}else{
self.muteRemoteBtn.hidden = YES;
}
}
-(void)setPkRoomModel:(QXRoomModel *)pkRoomModel{
_pkRoomModel = pkRoomModel;
for (QXRoomPitModel*model in pkRoomModel.room_info.pit_list) {
if (model.pit_number.intValue == 9) {
self.pk_userId = model.user_id;
break;
}
}
self.rightSeatView.roomModel = pkRoomModel;
}
-(void)setMyPitNumber:(NSInteger)myPitNumber{
_myPitNumber = myPitNumber;
self.leftSeatView.myPitNumber = myPitNumber;
}
-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number{
if ([user.user_id isEqualToString:[QXGlobal shareGlobal].loginModel.user_id]) {
if (isUpSeat) {
self.myPitNumber = pit_number;
if (self.myPitNumber == 9) {
self.muteRemoteBtn.hidden = NO;
}
}else{
self.myPitNumber = -1;
self.muteRemoteBtn.hidden = YES;
}
}
[self.leftSeatView didUpDownSeatWithUser:user isUpSeat:isUpSeat pit_number:pit_number];
}
-(void)roomSeatExchangedWithFromPitNumber:(NSInteger)fromPitNumber toPitNumber:(NSInteger)toPitNumber userInfo:(QXUserHomeModel*)userInfo{
[self.leftSeatView roomSeatExchangedWithFromPitNumber:fromPitNumber toPitNumber:toPitNumber userInfo:userInfo];
}
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
[self.leftSeatView roomUserInfoDidChanged:user];
}
-(void)clearCharm{
[self.leftSeatView clearCharm];
}
-(void)playHWDMP4{
[self.leftSeatView playHWDMP4];
}
-(void)stopHWDMP4{
[self.leftSeatView stopHWDMP4];
}
-(void)roomClearUserCharmWithUserId:(NSString *)userId{
[self.leftSeatView roomClearUserCharmWithUserId:userId];
}
-(void)setSeatIsLock:(NSString *)isLock pitNumber:(NSString *)pitNumber{
[self.leftSeatView setSeatIsLock:isLock pitNumber:pitNumber];
}
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
[self.leftSeatView setSeatCharmWithUser:model];
}
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
[self.leftSeatView setSeatCharmWithUsers:users];
}
-(void)startAction{
self.timeSetView.pkId = self.roomModel.pk_info.pk_id;
[self.timeSetView showInView:self.viewController.view];
}
-(void)endAction{
MJWeakSelf
if (self.roomModel.pk_info.pk_part.intValue == 4 && self.isDefeat) {
self.alertView.message = @"惩罚阶段结束PK需对方主持同意是否发起结束";
}else{
self.alertView.message = @"是否提前结束本场PK";
}
self.alertView.commitBlock = ^{
[QXMineNetwork roomPkEndWithPk_id:weakSelf.roomModel.pk_info.pk_id type:@"3" user_id:[QXGlobal shareGlobal].loginModel.user_id successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
};
[[QXGlobal shareGlobal] showView:self.alertView controller:self.viewController.navigationController popType:(PopViewTypePopFromCenter) tapDismiss:NO finishBlock:^{
}];
}
-(void)muteRemoteAction:(UIButton*)sender{
// [[QXAgoraEngineEx sharedEngine] muteRemoteEXAudioStream:sender.selected];
// return;
sender.selected = !sender.selected;
NSDictionary *dict = @{
@"is_mute":[NSNumber numberWithInteger:sender.selected?1:0],
};
NSString *jsonStr = [dict jsonStringEncoded];
[[QXRoomMessageManager shared] sendC2CMessage:jsonStr messageType:QXRoomMessageTypeMuteRemoteAudio userId:self.pk_userId];
[[QXAgoraEngineEx sharedEngine] muteRemoteEXAudioStream:sender.selected];
}
-(void)didClickUserHeaderWithPitModel:(QXRoomPitModel *)pitModel userModel:(id)userModel isPkRoom:(BOOL)isPkRoom pkRoomId:(NSString *)pkRoomId isNoTakeOff:(BOOL)isNoTakeOff{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickUserHeaderWithPitModel:userModel:isPkRoom:pkRoomId:isNoTakeOff:)]) {
[self.delegate didClickUserHeaderWithPitModel:pitModel userModel:nil isPkRoom:isPkRoom pkRoomId:pkRoomId isNoTakeOff:isNoTakeOff];
}
}
-(void)didHugSeatWithPitNumber:(NSString *)pitNumber{
if (self.delegate && [self.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
[self.delegate didHugSeatWithPitNumber:pitNumber];
}
}
-(void)pkStartWithPkEndTimes:(NSString *)pk_end_times pk_id:(nonnull NSString *)pk_id{
self.roomModel.pk_info.pk_id = pk_id;
self.roomModel.pk_info.pk_part = @"3";
// [self.pkTimeBtn setTitle:@"未开始" forState:(UIControlStateNormal)];
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
long long milliseconds = (long long)(timeInterval);
self.startTime = pk_end_times.longLongValue - milliseconds;
[self startTimerWithPart:@"3"];
[self configBtn];
}
-(void)roomPKValueDidChangedWithRoomIdA:(NSString *)room_id_a create_value_a:(NSString *)create_value_a room_id_b:(NSString *)room_id_b receive_value_b:(NSString *)receive_value_b{
if ([room_id_a isEqualToString:self.roomModel.room_info.room_id]) {
self.roomModel.pk_info.my_room_value = create_value_a;
self.roomModel.pk_info.pk_room_value = receive_value_b;
[self.progressView setLeftProgressWithLeftValue:self.roomModel.pk_info.my_room_value rightValue:self.roomModel.pk_info.pk_room_value];
}else{
self.roomModel.pk_info.my_room_value = receive_value_b;
self.roomModel.pk_info.pk_room_value = create_value_a;
[self.progressView setLeftProgressWithLeftValue:self.roomModel.pk_info.my_room_value rightValue:self.roomModel.pk_info.pk_room_value];
}
}
/// pk结果
-(void)pkResultWithIsVictory:(NSInteger)isVictory
end_time:(NSString*)end_time
victory_name:(NSString*)victory_name
victory_cover:(NSString*)victory_cover
defeated_name:(NSString*)defeated_name
defeated_cover:(NSString*)defeated_cover{
self.leftResult.hidden = NO;
self.rightResult.hidden = NO;
if (isVictory == 1) {
// 胜利
self.resultView.type = QXRoomPKResulttTypeVictory;
self.leftResult.image = [UIImage imageNamed:@"room_pk_victory"];
self.rightResult.image = [UIImage imageNamed:@"room_pk_defeated"];
}else if (isVictory == 0){
// 失败
self.resultView.type = QXRoomPKResulttTypeDefeated;
self.leftResult.image = [UIImage imageNamed:@"room_pk_defeated"];
self.rightResult.image = [UIImage imageNamed:@"room_pk_victory"];
self.isDefeat = YES;
}else{
self.leftResult.image = [UIImage imageNamed:@"room_pk_tie"];
self.rightResult.image = [UIImage imageNamed:@"room_pk_tie"];
self.resultView.type = QXRoomPKResulttTypeTie;
}
[self.resultView setResultWithVictory_name:victory_name victory_cover:victory_cover defeated_name:defeated_name defeated_cover:defeated_cover];
[self.resultView showInView:self.viewController.view];
self.roomModel.pk_info.pk_part = @"4";
self.roomModel.pk_info.pk_end_times = end_time;
NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
long long milliseconds = (long long)(timeInterval);
self.startTime = end_time.longLongValue - milliseconds;
[self startTimerWithPart:@"4"];
}
-(void)startTimerWithPart:(NSString*)part{
__block NSString *str = @"";
if (part.intValue == 2) {
str = @"等待开始";
}else if (part.intValue == 3){
str = @"进行中";
}else if (part.intValue == 4){
str = @"惩罚时间";
}
if (_timer) {
[_timer invalidate];
_timer = nil;
}
MJWeakSelf
_timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
weakSelf.startTime--;
if (weakSelf.startTime <= 0) {
[weakSelf endTimer];
}else{
[self.pkTimeBtn setTitle:[NSString stringWithFormat:@"%@ %02ld:%02ld",str,weakSelf.startTime/60,weakSelf.startTime%60] forState:(UIControlStateNormal)];
}
}];
}
-(void)endTimer{
if (_timer) {
[self->_timer invalidate];
self->_timer = nil;
[self.pkTimeBtn setTitle:@"00:00" forState:(UIControlStateNormal)];
}
}
-(void)destroyViews{
[self.leftSeatView destroyViews];
[self.rightSeatView destroyViews];
}
-(QXRoomPKTimeSetView *)timeSetView{
if (!_timeSetView) {
_timeSetView = [[QXRoomPKTimeSetView alloc] init];
}
return _timeSetView;
}
-(QXRoomPKResultView *)resultView{
if (!_resultView ) {
_resultView = [[QXRoomPKResultView alloc] initWithType:(QXRoomPKResulttTypeTie)];
}
return _resultView;
}
-(UIImageView *)leftResult{
if (!_leftResult) {
_leftResult = [[UIImageView alloc] init];
}
return _leftResult;
}
-(UIImageView *)rightResult{
if (!_rightResult) {
_rightResult = [[UIImageView alloc] init];
}
return _rightResult;
}
-(QXAlertView *)alertView{
if (!_alertView) {
_alertView = [[QXAlertView alloc] initWithFrame:CGRectMake(0, 0, ScaleWidth(300), ScaleWidth(175))];
}
return _alertView;
}
@end
@implementation QXPKIconView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.pkImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_pk_icon"]];
[self addSubview:self.pkImageView];
[self.pkImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.right.left.equalTo(self);
}];
}
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
UIView *hitView= [super hitTest:point withEvent:event];
if (hitView== self)
{
return nil;
}
else
{
return hitView;
}
}
@end
@implementation QXRoomSeatPKSubView
-(instancetype)initWithMyRoom:(BOOL)isMyRoom{
if (self = [super init]) {
_isMyRoom = isMyRoom;
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:self.isMyRoom?@"room_pk_left_bg":@"room_pk_right_bg"]];
self.bgImageView.contentMode = UIViewContentModeScaleToFill;
[self addSubview:self.bgImageView];
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.left.right.equalTo(self);
}];
self.titleLabel = [[UILabel alloc] init];
self.titleLabel.font = [UIFont systemFontOfSize:12];
self.titleLabel.textColor = UIColor.whiteColor;
[self addSubview:self.titleLabel];
if (self.isMyRoom) {
self.titleLabel.text = @"我方";
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(6);
make.top.equalTo(self).offset(2);
}];
}else{
self.titleLabel.text = @"对方";
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-6);
make.top.equalTo(self).offset(2);
}];
}
}
@end
@implementation QXRoomSeatPKProgress
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.leftView = [[UIView alloc] init];
self.leftView.backgroundColor = [UIColor sh_getColorOfPercent:0.5 between:RGB16(0x72C1F8) and:RGB16(0x6785F6)];
[self addSubview:self.leftView];
[self.leftView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self);
make.top.bottom.equalTo(self);
make.width.equalTo(self.mas_width).multipliedBy(0.5);
}];
self.rightView = [[UIView alloc] init];
self.rightView.backgroundColor = [UIColor sh_getColorOfPercent:0.5 between:RGB16(0x3F1D71) and:RGB16(0x3F1D73)];
[self addSubview:self.rightView];
[self.rightView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.leftView.mas_right);
make.top.bottom.equalTo(self);
make.right.equalTo(self);
}];
self.leftTitleLabel = [[UILabel alloc] init];
self.leftTitleLabel.font = [UIFont systemFontOfSize:12];
self.leftTitleLabel.textColor = UIColor.whiteColor;
self.leftTitleLabel.text = @"0";
[self addSubview:self.leftTitleLabel];
[self.leftTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(6);
make.top.bottom.equalTo(self);
}];
self.rightTitleLabel = [[UILabel alloc] init];
self.rightTitleLabel.font = [UIFont systemFontOfSize:12];
self.rightTitleLabel.textColor = UIColor.whiteColor;
self.rightTitleLabel.text = @"0";
[self addSubview:self.rightTitleLabel];
[self.rightTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self).offset(-6);
make.top.bottom.equalTo(self);
}];
}
-(void)setLeftProgressWithLeftValue:(NSString *)leftValue rightValue:(NSString *)rightValue{
self.leftTitleLabel.text = leftValue;
self.rightTitleLabel.text = rightValue;
if (leftValue.longLongValue==0 && rightValue.longLongValue==0) {
return;
}
CGFloat ratio = (double)leftValue.longLongValue/(leftValue.longLongValue + rightValue.longLongValue);
[UIView animateWithDuration:0.2 animations:^{
[self.leftView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self);
make.top.bottom.equalTo(self);
make.width.equalTo(self.mas_width).multipliedBy(ratio);
}];
}];
}
@end