}
class DialogRecordBar: BaseView {
- let recordView = DialogRecordView()
- let languageView = DialogLanguageView()
+ let leftItem = DialogItem()
+ let rightItem = DialogItem()
+ let switchBtn = UIButton()
+
+
weak var delegate:DialogRecordBarDelegate?
var navBar:BaseNavigationBar = BaseNavigationBar()
+ var isBusy:Bool{
+ return leftItem.recordItem.activeView.animating || leftItem.recordItem.loadView.animating || rightItem.recordItem.activeView.animating || rightItem.recordItem.loadView.animating
+ }
+
override func setupViews() {
backgroundColor = .clear
- addSubviews([recordView,languageView])
- recordView.do { v in
-// v.backgroundColor = .green
- v.switchBtn.addTarget(self, action: #selector(switchBtnAction), for: .touchUpInside)
- v.leftRecord.addTarget(self, action: #selector(leftRecordBtnAction), for: .touchUpInside)
- v.rightRecord.addTarget(self, action: #selector(rightRecordBtnAction), for: .touchUpInside)
+ addSubviews([leftItem,rightItem,switchBtn])
+ switchBtn.do { v in
+ v.setImage(UIImage(named: "split_screen_1"), for: .normal)
+ v.setImage(UIImage(named: "split_screen_2"), for: .selected)
+ v.addTarget(self, action: #selector(switchBtnAction), for: .touchUpInside)
+ // v.backgroundColor = .red
+
}
-
- languageView.do { (v) in
- v.leftItem.yc.addTap(target: self, action: #selector(leftLanguageAction))
- v.rightItem.yc.addTap(target: self, action: #selector(rightLanguageAction))
+ leftItem.do { v in
+ v.recordItem.setImage(UIImage(named: "dialog_device_ear"), for: .normal)
+ v.recordItem.setImage(UIImage(named: "dialog_device_ear"), for: .selected)
- v.leftItem.language = AiLanguageCache.get(type: .dialog_left) ?? .chinse
- v.rightItem.language = AiLanguageCache.get(type: .dialog_right) ?? .english
+ v.recordItem.addTarget(self, action: #selector(leftRecordBtnAction), for: .touchUpInside)
+ v.languageItem.yc.addTap(target: self, action: #selector(leftLanguageAction))
+ v.languageItem.language = AiLanguageCache.get(type: .dialog_left) ?? .chinse
+// v.languageItem.valueLabel.text = CCConfig.deviceType
+ }
+ rightItem.do { v in
+ v.recordItem.setImage(UIImage(named: "dialog_device_phone"), for: .normal)
+ v.recordItem.setImage(UIImage(named: "dialog_device_phone"), for: .selected)
+ v.recordItem.activeView.tintColor = UIColor.color(.theme)
+ v.recordItem.activeView.yc.setBorder(width: 2, color: .color(.theme), radius: 17)
+ v.recordItem.loadView.tintColor = UIColor.color(.theme)
+
+ v.recordItem.addTarget(self, action: #selector(rightRecordBtnAction), for: .touchUpInside)
+ v.languageItem.yc.addTap(target: self, action: #selector(rightLanguageAction))
+ v.languageItem.language = AiLanguageCache.get(type: .dialog_right) ?? .english
+// v.languageItem.valueLabel.text = "手机".l10n
+// v.backgroundColor = .red
}
}
-
+
override func setupLayout() {
- recordView.snp.makeConstraints { make in
- make.width.equalToSuperview()
- make.height.equalTo(34)
+ switchBtn.snp.remakeConstraints { make in
+ make.size.equalTo(38)
+ make.centerX.equalToSuperview()
+ make.top.equalToSuperview().inset(10)
+ }
+ leftItem.snp.remakeConstraints { make in
+ make.width.equalTo(90)
+ make.height.equalTo(98)
+ make.top.equalToSuperview().inset(10)
+ make.right.equalToSuperview().offset(-(kScreenWid/2 + 60))
+ }
+ rightItem.snp.remakeConstraints { make in
+ make.width.equalTo(90)
+ make.height.equalTo(leftItem)
make.top.equalToSuperview().inset(10)
- make.left.equalToSuperview()
+ make.left.equalToSuperview().offset(kScreenWid/2 + 60)
}
- languageView.snp.makeConstraints { make in
- make.width.equalToSuperview()
- make.top.equalTo(recordView.snp.bottom)
- make.left.equalToSuperview()
- make.height.equalTo(60)
+ }
+ func splitLayout(){
+ switchBtn.snp.remakeConstraints { make in
+ make.size.equalTo(38)
+ make.right.equalToSuperview().inset(36)
+ make.top.equalToSuperview().inset(10)
+ }
+ leftItem.snp.remakeConstraints { make in
+ make.width.equalTo(90)
+ make.height.equalTo(98)
+ make.top.equalToSuperview().inset(10)
+ make.right.equalToSuperview().offset(-(kScreenWid/2 - 33))
}
}
-
func stopRecord(_ type:DialogRecordDeviceType){
if type == .earphone {
- recordView.leftRecord.isSelected = false
- recordView.leftRecord.stopAnimating(finished: { [weak self] in
+ leftItem.recordItem.isSelected = false
+ leftItem.recordItem.stopAnimating(finished: { [weak self] in
guard let self = self else { return }
- recordView.leftRecord.alpha = 1
- languageView.leftItem.alpha = 1
- recordView.rightRecord.alpha = 1
- languageView.rightItem.alpha = 1
+ leftItem.recordItem.alpha = 1
+ leftItem.languageItem.alpha = 1
+ rightItem.recordItem.alpha = 1
+ rightItem.languageItem.alpha = 1
})
}
else{
- recordView.rightRecord.isSelected = false
- recordView.rightRecord.stopAnimating(finished: { [weak self] in
+ rightItem.recordItem.isSelected = false
+ rightItem.recordItem.stopAnimating(finished: { [weak self] in
guard let self = self else { return }
- recordView.leftRecord.alpha = 1
- languageView.leftItem.alpha = 1
- recordView.rightRecord.alpha = 1
- languageView.rightItem.alpha = 1
+ leftItem.recordItem.alpha = 1
+ leftItem.languageItem.alpha = 1
+ rightItem.recordItem.alpha = 1
+ rightItem.languageItem.alpha = 1
})
}
}
@objc func switchBtnAction(){
- recordView.switchBtn.isSelected = !recordView.switchBtn.isSelected
- let type:DialogRecordLayoutType = recordView.switchBtn.isSelected ? .spolit:.normal
+ switchBtn.isSelected = !switchBtn.isSelected
+ let type:DialogRecordLayoutType = switchBtn.isSelected ? .spolit:.normal
delegate?.recordBar(self, layoutChange: type)
if type == .normal {
navBar.titleLabel.isHidden = false
- recordView.addSubview(recordView.rightRecord)
- recordView.setupLayout()
+ addSubview(rightItem)
+ setupLayout()
+ rightItem.setupLayout()
+ navBar.frame = CGRectMake(0, 0, kScreenWid, kNavBtm)
+ rightItem.transform = CGAffineTransform(rotationAngle: .pi*2)
}
else{
- recordView.splitLayout()
+ splitLayout()
+ rightItem.setupLayout()
+ rightItem.transform = CGAffineTransform(rotationAngle: .pi)
navBar.titleLabel.isHidden = true
- navBar.addSubview(recordView.rightRecord)
- recordView.rightRecord.snp.makeConstraints { make in
- make.center.equalTo(navBar.titleLabel)
+ navBar.addSubview(rightItem)
+ navBar.frame = CGRectMake(0, 0, kScreenWid, kNavBtm + 10)
+ navBar.superview?.bringSubviewToFront(navBar)
+ rightItem.snp.remakeConstraints { make in
+ make.centerX.equalToSuperview()
+ make.bottom.equalToSuperview()
+ make.width.height.equalTo(leftItem)
}
}
}
@objc func leftRecordBtnAction(){
- if recordView.rightRecord.activeView.animating || recordView.rightRecord.loadView.animating {
+ if self.isBusy {
return
}
- recordView.leftRecord.isSelected = !recordView.leftRecord.isSelected
- if recordView.leftRecord.isSelected {
- recordView.leftRecord.alpha = 1
- recordView.rightRecord.alpha = 0.3
- languageView.leftItem.alpha = 0.3
- languageView.rightItem.alpha = 0.3
+ leftItem.recordItem.isSelected = !leftItem.recordItem.isSelected
+ if leftItem.recordItem.isSelected {
+ leftItem.recordItem.alpha = 1
+ leftItem.languageItem.alpha = 0.3
+ rightItem.recordItem.alpha = 0.3
+ rightItem.languageItem.alpha = 0.3
- recordView.leftRecord.startAnimating()
+ leftItem.recordItem.startAnimating()
delegate?.recordBar(self, device: .earphone,stateChange: .start)
}
else{
stopRecord(.earphone)
delegate?.recordBar(self, device: .earphone,stateChange: .stop)
}
-
}
@objc func rightRecordBtnAction(){
- if recordView.leftRecord.activeView.animating || recordView.leftRecord.loadView.animating {
+ if self.isBusy{
return
}
- recordView.rightRecord.isSelected = !recordView.rightRecord.isSelected
+ rightItem.recordItem.isSelected = !rightItem.recordItem.isSelected
- if recordView.rightRecord.isSelected {
- recordView.leftRecord.alpha = 0.3
- recordView.rightRecord.alpha = 1
- languageView.leftItem.alpha = 0.3
- languageView.rightItem.alpha = 0.3
+ if rightItem.recordItem.isSelected {
+ leftItem.recordItem.alpha = 0.3
+ leftItem.languageItem.alpha = 0.3
+ rightItem.recordItem.alpha = 1
+ rightItem.languageItem.alpha = 0.3
- recordView.rightRecord.startAnimating()
+ rightItem.recordItem.startAnimating()
delegate?.recordBar(self, device: .phone,stateChange: .start)
}
else{
}
@objc func leftLanguageAction(){
- if recordView.isBusy {
+ if self.isBusy {
return
}
- let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: true,left: languageView.leftItem.language,right: languageView.rightItem.language)
- v.selectedIndex = v.list.firstIndex(where: {$0.title == languageView.leftItem.language.title}) ?? 0
+ let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: true,left: leftItem.languageItem.language,right: rightItem.languageItem.language)
+ v.selectedIndex = v.list.firstIndex(where: {$0.title == leftItem.languageItem.language.title}) ?? 0
v.show()
v.didSelected = {[weak self] (index,value) in
guard let self = self else { return }
if index == 0 {
- languageView.leftItem.language = value
+ leftItem.languageItem.language = value
AiLanguageCache.save(type: .dialog_left, lan: value)
}
else{
- languageView.rightItem.language = value
+ rightItem.languageItem.language = value
AiLanguageCache.save(type: .dialog_right, lan: value)
}
}
}
@objc func rightLanguageAction(){
- if recordView.isBusy{
+ if self.isBusy{
return
}
- let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: false,left: languageView.leftItem.language,right: languageView.rightItem.language)
- v.selectedIndex = v.list.firstIndex(where: {$0.title == languageView.rightItem.language.title}) ?? 0
+ let v = LanguagePickerView(languages: CCAiLanguage.all,isLeft: false,left: leftItem.languageItem.language,right: rightItem.languageItem.language)
+ v.selectedIndex = v.list.firstIndex(where: {$0.title == rightItem.languageItem.language.title}) ?? 0
v.show()
v.didSelected = {[weak self] (index,value) in
guard let self = self else { return }
if index == 0 {
- languageView.leftItem.language = value
+ leftItem.languageItem.language = value
AiLanguageCache.save(type: .dialog_left, lan: value)
}
else{
- languageView.rightItem.language = value
+ rightItem.languageItem.language = value
AiLanguageCache.save(type: .dialog_right, lan: value)
}
}
}
- class DialogRecordView:BaseView{
- let leftRecord = DialogRecordingButton()
- let rightRecord = DialogRecordingButton()
- let switchBtn = UIButton()
- var isBusy:Bool{
- return leftRecord.activeView.animating || leftRecord.loadView.animating || rightRecord.activeView.animating || rightRecord.loadView.animating
- }
-
- override func setupViews() {
- addSubviews([leftRecord,rightRecord,switchBtn])
- switchBtn.do { v in
- v.setImage(UIImage(named: "split_screen_1"), for: .normal)
- v.setImage(UIImage(named: "split_screen_2"), for: .selected)
-// v.backgroundColor = .red
-
- }
- leftRecord.do { v in
- v.setImage(UIImage(named: "dialog_device_ear"), for: .normal)
- v.setImage(UIImage(named: "dialog_device_ear"), for: .selected)
- }
- rightRecord.do { v in
- v.setImage(UIImage(named: "dialog_device_phone"), for: .normal)
- v.setImage(UIImage(named: "dialog_device_phone"), for: .selected)
- v.activeView.tintColor = UIColor.color(.theme)
- v.activeView.yc.setBorder(width: 2, color: .color(.theme), radius: 17)
- v.loadView.tintColor = UIColor.color(.theme)
- }
- }
- override func setupLayout() {
- switchBtn.snp.remakeConstraints { make in
- make.size.equalTo(34)
- make.centerX.equalToSuperview()
- make.top.equalToSuperview()
- }
- leftRecord.snp.remakeConstraints { make in
- make.width.equalTo(66)
- make.height.equalTo(34)
- make.top.equalToSuperview().inset(0)
- make.right.equalToSuperview().offset(-(kScreenWid/2 + 60))
- }
- rightRecord.snp.remakeConstraints { make in
- make.width.equalTo(66)
- make.height.equalTo(34)
- make.top.equalToSuperview().inset(0)
- make.left.equalToSuperview().offset(kScreenWid/2 + 60)
- }
- }
- func splitLayout(){
- switchBtn.snp.remakeConstraints { make in
- make.size.equalTo(34)
- make.right.equalToSuperview().inset(36)
- make.top.equalToSuperview()
- }
- leftRecord.snp.remakeConstraints { make in
- make.width.equalTo(66)
- make.height.equalTo(34)
- make.top.equalToSuperview().inset(0)
- make.right.equalToSuperview().offset(-(kScreenWid/2 - 33))
- }
- }
- }
- class DialogLanguageView: UIView {
- let leftItem = RecordLanguageItem()
- let rightItem = RecordLanguageItem()
+
+ class DialogItem: UIView {
+ let languageItem = RecordLanguageItem()
+ let recordItem = DialogRecordingButton()
override init(frame: CGRect) {
super.init(frame: frame)
func setupViews() {
// backgroundColor = .yellow
- addSubviews([leftItem,rightItem])
-
- leftItem.do { (v) in
- v.language = CCAiLanguage.chinse
- v.yc.addTap(target: self, action: #selector(leftLanguageAction))
- v.language = .chinse
- v.valueLabel.text = CCConfig.deviceType
- }
- rightItem.do { (v) in
- v.language = CCAiLanguage.english
- v.yc.addTap(target: self, action: #selector(rightLanguageAction))
- v.language = .english
- v.valueLabel.text = "手机".l10n
- }
+ addSubviews([languageItem,recordItem])
}
func setupLayout() {
- leftItem.snp.makeConstraints { make in
- make.height.equalTo(60)
- make.top.equalToSuperview()
- make.right.equalToSuperview().offset(-(kScreenWid/2 + 60))
+ recordItem.snp.remakeConstraints { make in
+ make.width.equalToSuperview()
+ make.height.equalTo(38)
+ make.top.equalToSuperview().inset(0)
+ make.centerX.equalToSuperview()
}
- rightItem.snp.makeConstraints { make in
- make.height.equalTo(leftItem)
- make.centerY.equalTo(leftItem)
- make.left.equalToSuperview().offset(kScreenWid/2 + 60)
+ languageItem.snp.remakeConstraints { make in
+ make.height.equalTo(60)
+ make.bottom.equalToSuperview()
+ make.centerX.equalToSuperview()
}
+
}
}
class RecordLanguageItem: BaseView {
valueLabel.snp.makeConstraints { make in
make.right.equalTo(titleLabel)
make.top.equalTo(titleLabel.snp.bottom).offset(5)
- make.bottom.equalToSuperview().inset(10)
+ make.bottom.equalToSuperview().inset(12)
}
}
}