87 lines
2.4 KiB
Swift
87 lines
2.4 KiB
Swift
|
|
//
|
||
|
|
// LocalAudioView.swift
|
||
|
|
// TUIRoomKit
|
||
|
|
//
|
||
|
|
// Created by janejntang on 2024/1/5.
|
||
|
|
//
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
|
||
|
|
class LocalAudioView: UIView {
|
||
|
|
let viewModel: LocalAudioViewModel
|
||
|
|
lazy var muteAudioButton : UIButton = {
|
||
|
|
let button = UIButton()
|
||
|
|
button.setImage(UIImage(named: "room_mic_on", in: tuiRoomKitBundle(), compatibleWith: nil), for: .normal)
|
||
|
|
button.setImage(UIImage(named: "room_mic_off", in: tuiRoomKitBundle(), compatibleWith: nil), for: .selected)
|
||
|
|
button.isSelected = viewModel.checkMuteAudioSelectedState()
|
||
|
|
button.backgroundColor = UIColor(0x2A2D38)
|
||
|
|
button.layer.cornerRadius = 12
|
||
|
|
return button
|
||
|
|
}()
|
||
|
|
|
||
|
|
init(viewModel: LocalAudioViewModel) {
|
||
|
|
self.viewModel = viewModel
|
||
|
|
super.init(frame: .zero)
|
||
|
|
self.transform = CGAffineTransform(translationX: 0, y: kScreenHeight)
|
||
|
|
}
|
||
|
|
|
||
|
|
required init?(coder: NSCoder) {
|
||
|
|
fatalError("init(coder:) has not been implemented")
|
||
|
|
}
|
||
|
|
|
||
|
|
deinit {
|
||
|
|
debugPrint("deinit:\(self)")
|
||
|
|
}
|
||
|
|
|
||
|
|
// MARK: - view layout
|
||
|
|
private var isViewReady: Bool = false
|
||
|
|
override func didMoveToWindow() {
|
||
|
|
super.didMoveToWindow()
|
||
|
|
guard !isViewReady else { return }
|
||
|
|
constructViewHierarchy()
|
||
|
|
activateConstraints()
|
||
|
|
bindInteraction()
|
||
|
|
isViewReady = true
|
||
|
|
}
|
||
|
|
|
||
|
|
private func constructViewHierarchy() {
|
||
|
|
addSubview(muteAudioButton)
|
||
|
|
}
|
||
|
|
|
||
|
|
private func activateConstraints() {
|
||
|
|
muteAudioButton.snp.makeConstraints { make in
|
||
|
|
make.edges.equalToSuperview()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private func bindInteraction() {
|
||
|
|
viewModel.viewResponder = self
|
||
|
|
muteAudioButton.addTarget(self, action: #selector(muteAudioAction(sender:)), for: .touchUpInside)
|
||
|
|
}
|
||
|
|
|
||
|
|
@objc func muteAudioAction(sender: UIButton) {
|
||
|
|
viewModel.muteAudioAction()
|
||
|
|
}
|
||
|
|
|
||
|
|
func show() {
|
||
|
|
UIView.animate(withDuration: 0.3) { [weak self] () in
|
||
|
|
guard let self = self else { return }
|
||
|
|
self.transform = .identity
|
||
|
|
} completion: { _ in
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func hide() {
|
||
|
|
self.transform = CGAffineTransform(translationX: 0, y: kScreenHeight)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
extension LocalAudioView: LocalAudioViewModelResponder {
|
||
|
|
func updateMuteAudioButton(isSelected: Bool) {
|
||
|
|
muteAudioButton.isSelected = isSelected
|
||
|
|
}
|
||
|
|
func makeToast(text: String) {
|
||
|
|
RoomRouter.makeToastInCenter(toast: text, duration: 1)
|
||
|
|
}
|
||
|
|
}
|