Files
midi_ios/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatPKView.m

626 lines
24 KiB
Mathematica
Raw Normal View History

2025-08-14 10:07:49 +08:00
//
// 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];
}
2025-09-22 14:58:13 +08:00
-(void)roomSeatExchangedWithFromPitNumber:(NSInteger)fromPitNumber toPitNumber:(NSInteger)toPitNumber userInfo:(QXUserHomeModel*)userInfo{
[self.leftSeatView roomSeatExchangedWithFromPitNumber:fromPitNumber toPitNumber:toPitNumber userInfo:userInfo];
2025-09-08 08:49:04 +08:00
}
2025-08-14 10:07:49 +08:00
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
[self.leftSeatView roomUserInfoDidChanged:user];
}
-(void)clearCharm{
[self.leftSeatView clearCharm];
}
2025-09-22 14:58:13 +08:00
-(void)playHWDMP4{
[self.leftSeatView playHWDMP4];
}
-(void)stopHWDMP4{
[self.leftSeatView stopHWDMP4];
}
2025-09-11 18:25:41 +08:00
-(void)roomClearUserCharmWithUserId:(NSString *)userId{
[self.leftSeatView roomClearUserCharmWithUserId:userId];
}
2025-08-14 10:07:49 +08:00
-(void)setSeatIsLock:(NSString *)isLock pitNumber:(NSString *)pitNumber{
[self.leftSeatView setSeatIsLock:isLock pitNumber:pitNumber];
}
-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
[self.leftSeatView setSeatCharmWithUser:model];
}
2025-09-19 11:38:43 +08:00
-(void)setSeatCharmWithUsers:(NSArray<QXUserHomeModel *> *)users{
[self.leftSeatView setSeatCharmWithUsers:users];
}
2025-08-14 10:07:49 +08:00
-(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