Files
featherVoice/TUIKit/TUIChat/UI_Classic/Input/TUIRecordView.m
2025-08-08 10:49:36 +08:00

136 lines
4.5 KiB
Objective-C

//
// TRecordView.m
// UIKit
//
// Created by kennethmiao on 2018/10/9.
// Copyright © 2018 Tencent. All rights reserved.
//
#import "TUIRecordView.h"
#import <TIMCommon/TIMDefine.h>
#import "TUIChatConfig.h"
@implementation TUIRecordView
- (id)init {
self = [super init];
if (self) {
[self setupViews];
[self defaultLayout];
}
return self;
}
- (void)setupViews {
self.backgroundColor = [UIColor clearColor];
_background = [[UIView alloc] init];
_background.backgroundColor = Record_Background_Color;
_background.layer.cornerRadius = 5;
[_background.layer setMasksToBounds:YES];
[self addSubview:_background];
_recordImage = [[UIImageView alloc] init];
_recordImage.image = [UIImage imageNamed:TUIChatImagePath(@"record_1")];
_recordImage.alpha = 0.8;
_recordImage.contentMode = UIViewContentModeCenter;
[_background addSubview:_recordImage];
_title = [[UILabel alloc] init];
_title.font = [UIFont systemFontOfSize:14];
_title.textColor = [UIColor whiteColor];
_title.textAlignment = NSTextAlignmentCenter;
_title.layer.cornerRadius = 5;
[_title.layer setMasksToBounds:YES];
[_background addSubview:_title];
_timeLabel = [[UILabel alloc] init];
_timeLabel.font = [UIFont systemFontOfSize:14];
_timeLabel.textColor = [UIColor whiteColor];
_timeLabel.textAlignment = NSTextAlignmentCenter;
_timeLabel.layer.cornerRadius = 5;
_timeLabel.text = [NSString stringWithFormat:@"%.0f\"", MIN(60, [TUIChatConfig defaultConfig].maxAudioRecordDuration)];
[_background addSubview:_timeLabel];
}
- (void)defaultLayout {
CGSize backSize = CGSizeMake(150, 150);
_title.text = TIMCommonLocalizableString(TUIKitInputRecordSlideToCancel);
CGSize titleSize = [_title sizeThatFits:CGSizeMake(Screen_Width, Screen_Height)];
CGSize timeSize = CGSizeMake(100, 15);
if (titleSize.width > backSize.width) {
backSize.width = titleSize.width + 2 * Record_Margin;
}
CGFloat imageHeight = backSize.height - titleSize.height - 2 * Record_Margin;
[self.timeLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.background).mas_offset(10);
make.width.mas_equalTo(100);
make.height.mas_equalTo(10);
make.centerX.mas_equalTo(self.background);
}];
[self.recordImage mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.timeLabel.mas_bottom).mas_offset(-13);
make.centerX.mas_equalTo(self.background);
make.width.mas_equalTo(backSize.width);
make.height.mas_equalTo(imageHeight);
}];
[self.title mas_remakeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.background);
make.top.mas_equalTo(self.recordImage.mas_bottom);
make.width.mas_equalTo(backSize.width);
make.height.mas_equalTo(15);
}];
[self.background mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.timeLabel.mas_top).mas_offset(-3);
make.bottom.mas_equalTo(self.title.mas_bottom).mas_offset(3);
make.center.mas_equalTo(self);
make.width.mas_equalTo(backSize.width);
}];
}
- (void)setStatus:(RecordStatus)status {
switch (status) {
case Record_Status_Recording: {
_title.text = TIMCommonLocalizableString(TUIKitInputRecordSlideToCancel);
_title.backgroundColor = [UIColor clearColor];
break;
}
case Record_Status_Cancel: {
_title.text = TIMCommonLocalizableString(TUIKitInputRecordReleaseToCancel);
_title.backgroundColor = [UIColor clearColor];
break;
}
case Record_Status_TooShort: {
_title.text = TIMCommonLocalizableString(TUIKitInputRecordTimeshort);
_title.backgroundColor = [UIColor clearColor];
break;
}
case Record_Status_TooLong: {
_title.text = TIMCommonLocalizableString(TUIKitInputRecordTimeLong);
_title.backgroundColor = [UIColor clearColor];
break;
}
default:
break;
}
}
- (void)setPower:(NSInteger)power {
NSString *imageName = [self getRecordImage:power];
_recordImage.image = [UIImage imageNamed:TUIChatImagePath(imageName)];
}
- (NSString *)getRecordImage:(NSInteger)power {
power = power + 60;
int index = 0;
if (power < 25) {
index = 1;
} else {
index = ceil((power - 25) / 5.0) + 1;
}
index = MIN(index, 8);
return [NSString stringWithFormat:@"record_%d", index];
}
@end