iRecordView
                                
                                 iRecordView copied to clipboard
                                
                                    iRecordView copied to clipboard
                            
                            
                            
                        A Simple Audio Recorder View with "hold to Record Button" and "Swipe to Cancel " Like WhatsApp
iRecordView
 
a Simple Audio Recorder View with hold to Record Button and Swipe to Cancel
Demo
 
Installation
iRecordView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'iRecordView'
Usage
add the views RecordButton and RecordView to your ViewController using Code or Storyboard
    let recordButton = RecordButton()
    recordButton.translatesAutoresizingMaskIntoConstraints = false
    let recordView = RecordView()
    recordView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(recordButton)
    view.addSubview(recordView)
    recordButton.widthAnchor.constraint(equalToConstant: 35).isActive = true
    recordButton.heightAnchor.constraint(equalToConstant: 35).isActive = true
    recordButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8).isActive = true
    recordButton.bottomAnchor.constraint(equalTo: view.safeBottomAnchor, constant: -16).isActive = true
    recordView.trailingAnchor.constraint(equalTo: recordButton.leadingAnchor, constant: -20).isActive = true
    recordView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
    recordView.bottomAnchor.constraint(equalTo: recordButton.bottomAnchor).isActive = true
now add your  recordView  to recordButton
    //IMPORTANT
    recordButton.recordView = recordView
now you can observe the states using the delegate
    recordView.delegate = self
this will give you 4 functions
    func onStart() {
    //start recording
    print("onStart")
    }
    
    func onCancel() {
    //when users swipes to delete the Record
    print("onCancel")
    }
    
    func onFinished(duration: CGFloat) {
    //user finished recording 
    print("onFinished \(duration)")
    }
    
    //optional
    func onAnimationEnd() {
    //when Trash Animation is Finished
    print("onAnimationEnd")
    }
Customization
//Cancel Record when Slide To Cancel view gets before duration time + offset  
recordView.offset = 20
//enable/disable Record Sounds
recordView.isSoundEnabled = true
recordView.durationTimerColor = .red
recordView.smallMicImage = myImage
recordView.slideToCancelText = "Test"
recordView.slideToCancelTextColor = .red
recordView.slideToCancelArrowImage = myImage
//to Handle Clicks by RecordButton you have to disable touch Gesture by using
recordButton.listenForRecord = false
Author
AbdulAlim Rajjoub
Thanks/Credits
RATTLESNAKE-VIPER for GLMoveToTrashAnimation
Looking for Android Version?
try out RecordView
Need a Chat app 💬 ?
Check out FireApp Chat
 
License
iRecordView is available under the MIT license. See the LICENSE file for more info.