From 4b59dfead10a10fe7c5146fba65055035d2b8a1d Mon Sep 17 00:00:00 2001 From: kevinzhow Date: Wed, 1 Apr 2015 20:10:16 +0800 Subject: [PATCH] Add record waver --- Yep.xcodeproj/project.pbxproj | 10 ++++++- .../ConversationViewController.swift | 28 +++++++++++++++---- Yep/Views/Component/YepWaverView.swift | 8 ++++-- Yep/Views/MessageToolbar/MessageToolbar.swift | 8 +++--- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/Yep.xcodeproj/project.pbxproj b/Yep.xcodeproj/project.pbxproj index c64124ce..44ce8307 100644 --- a/Yep.xcodeproj/project.pbxproj +++ b/Yep.xcodeproj/project.pbxproj @@ -230,6 +230,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0A3E605A1ACC1035003DC853 /* Component */ = { + isa = PBXGroup; + children = ( + 0A3E60581ACC0318003DC853 /* YepWaverView.swift */, + ); + name = Component; + sourceTree = ""; + }; 0A5D83951AC5D3CD000045BF /* TabBar */ = { isa = PBXGroup; children = ( @@ -397,7 +405,7 @@ 5099B9C51AB95111002F940B /* Rank */, 5099B9CA1AB9A7CF002F940B /* CameraPreview */, 503315A11AC126140008A209 /* MessageToolbar */, - 0A3E60581ACC0318003DC853 /* YepWaverView.swift */, + 0A3E605A1ACC1035003DC853 /* Component */, ); name = Views; sourceTree = ""; diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index ae53e4a6..88e8a525 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -13,6 +13,8 @@ import AVFoundation class ConversationViewController: UIViewController { var conversation: Conversation! + + var waverView: YepWaverView! lazy var messages: RLMResults = { return messagesInConversation(self.conversation) @@ -153,6 +155,22 @@ class ConversationViewController: UIViewController { }) } } + + self.waverView = YepWaverView(frame: self.view.bounds) + + + self.waverView.waver.waverCallback = { + + + if (YepAudioService.sharedManager.audioRecorder.recording) { + println("Update waver") + YepAudioService.sharedManager.audioRecorder.updateMeters() + var normalizedValue = pow(10, YepAudioService.sharedManager.audioRecorder.averagePowerForChannel(0)/40) + + self.waverView.waver.level = CGFloat(normalizedValue) + } + + } messageToolbar.imageSendAction = { messageToolbar in @@ -166,18 +184,18 @@ class ConversationViewController: UIViewController { } } - messageToolbar.voiceSendAction = { messageToolbar in - + messageToolbar.voiceSendBeginAction = { messageToolbar in + self.view.window?.addSubview(self.waverView) YepAudioService.sharedManager.beginRecord() } messageToolbar.voiceSendCancelAction = { messageToolbar in - + self.waverView.removeFromSuperview() YepAudioService.sharedManager.endRecord() } - messageToolbar.voiceSendUpAction = { messageToolbar in - + messageToolbar.voiceSendEndAction = { messageToolbar in + self.waverView.removeFromSuperview() YepAudioService.sharedManager.endRecord() // s3PrivateUploadParams(failureHandler: nil) { s3UploadParams in diff --git a/Yep/Views/Component/YepWaverView.swift b/Yep/Views/Component/YepWaverView.swift index 2203c836..33eb9ef9 100644 --- a/Yep/Views/Component/YepWaverView.swift +++ b/Yep/Views/Component/YepWaverView.swift @@ -22,16 +22,18 @@ class YepWaverView: UIView { override init(frame: CGRect) { super.init(frame: frame) - + setup() } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) + setup() } private func setup() { - waver = Waver(frame: CGRectMake(0, CGRectGetHeight(self.bounds)/2.0 - 50.0, CGRectGetWidth(self.bounds), 100.0)) - self.backgroundColor = UIColor(white: 1.0, alpha: 0.4) + waver = Waver(frame: CGRectMake(0, CGRectGetHeight(self.bounds)/2.0 - 150.0, CGRectGetWidth(self.bounds), 100.0)) + self.backgroundColor = UIColor(white: 1.0, alpha: 0.9) + self.addSubview(waver) } } diff --git a/Yep/Views/MessageToolbar/MessageToolbar.swift b/Yep/Views/MessageToolbar/MessageToolbar.swift index bea84519..bb455241 100644 --- a/Yep/Views/MessageToolbar/MessageToolbar.swift +++ b/Yep/Views/MessageToolbar/MessageToolbar.swift @@ -51,9 +51,9 @@ class MessageToolbar: UIToolbar { var imageSendAction: ((messageToolBar: MessageToolbar) -> ())? - var voiceSendAction: ((messageToolBar: MessageToolbar) -> ())? + var voiceSendBeginAction: ((messageToolBar: MessageToolbar) -> ())? - var voiceSendUpAction: ((messageToolBar: MessageToolbar) -> ())? + var voiceSendEndAction: ((messageToolBar: MessageToolbar) -> ())? var voiceSendCancelAction: ((messageToolBar: MessageToolbar) -> ())? @@ -218,13 +218,13 @@ class MessageToolbar: UIToolbar { } func trySendVoiceMessageBegin() { - if let textSendAction = voiceSendAction { + if let textSendAction = voiceSendBeginAction { textSendAction(messageToolBar: self) } } func trySendVoiceMessageEnd() { - if let textSendAction = voiceSendUpAction { + if let textSendAction = voiceSendEndAction { textSendAction(messageToolBar: self) } }