私聊页面的自定义U

This commit is contained in:
fengshuo
2024-03-01 14:22:06 +08:00
parent 678297f771
commit 41ad01515d
49 changed files with 1088 additions and 71 deletions

View File

@@ -0,0 +1,124 @@
//
// ChatSendVoiceView.swift
// yinmeng-ios
//
// Created by MaiMang on 2024/3/1.
//
import UIKit
import NIMSDK
class ChatSendVoiceView: UIView {
private var backView: UIView = {
let view = UIView()
view.backgroundColor = .black
view.layer.masksToBounds = true
view.layer.cornerRadius = 10
return view
}()
private var logoImageView: UIImageView = {
let imageView = UIImageView()
imageView.isUserInteractionEnabled = true
let firstImage = UIImage(named: "chat_voice_record_first")!
let secondImage = UIImage(named: "chat_voice_record_second")!
let thirdImage = UIImage(named: "chat_voice_record_third")!
imageView.animationImages = [firstImage, secondImage, thirdImage]
imageView.animationDuration = 1
imageView.animationRepeatCount = .max
return imageView
}()
private var titleLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 15)
label.textColor = .white
label.textAlignment = .center
return label
}()
private var timeLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 17, weight: .medium)
label.textColor = .white
label.textAlignment = .center
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
loadSubViews()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func configAudioRecord(imageName: String, title: String, isAnimation: Bool) {
logoImageView.image = UIImage(named: imageName)
if isAnimation {
logoImageView.startAnimating()
} else {
logoImageView.stopAnimating()
}
titleLabel.text = title
}
func beginAudioRecord() {
timeLabel.text = "00:00"
NIMSDK.shared().mediaManager.record(forDuration: 60)
}
func cancelAudioRecord() {
timeLabel.text = "00:00"
NIMSDK.shared().mediaManager.cancelRecord()
}
func finishAudioRecord() {
timeLabel.text = "00:00"
NIMSDK.shared().mediaManager.stopRecord()
}
func updateAudioRecordProgress(recordTime: TimeInterval) {
let minutes = Int(recordTime) / 60
let seconds = Int(recordTime) % 60
timeLabel.text = String(format: "%02d:%02d", minutes, seconds)
}
// Private Method
private func loadSubViews() {
addSubview(backView)
backView.addSubview(logoImageView)
backView.addSubview(titleLabel)
backView.addSubview(timeLabel)
translatesAutoresizingMaskIntoConstraints = false
self.snp.makeConstraints { make in
make.size.equalTo(CGSize(width: 250, height: 250))
}
timeLabel.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(25)
}
backView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
logoImageView.snp.makeConstraints { make in
make.size.equalTo(CGSize(width: 90, height: 72))
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(50)
}
titleLabel.snp.makeConstraints { make in
make.left.right.equalTo(backView).inset(0)
make.top.equalTo(logoImageView.snp.bottom).offset(25)
}
}
}