A Record Button in Swift. Inspired by SDRecordButton It shows you the recording process when recording. It's great for a video recorder app with a fixed/maximum length like snapchat, vine, instragram.
iOS 8 and higher
To run the example project, clone the repo, and run pod install
from the Example directory first.
RecordButton is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "RecordButton"
Add this line add the top of the file you want to use this module in import RecordButton
Add this to viewDidLoad
let recordButton = RecordButton(frame: CGRect(x: 0,y: 0,width: 70,height: 70))
view.addSubview(recordButton)
it's the easiest to just check out the example project for this.
To update progress the RecordButton must be an instance of the class. You should also add a progressTimer
and a progress
variable, like this:
class ViewController: UIViewController {
var recordButton : RecordButton!
var progressTimer : Timer!
var progress : CGFloat = 0
// rest of viewController
The recordButton
needs a target for start and stopping the progress timer. Add this code after initialization of the recordButton
(usualy in viewDidLoad()
)
recordButton.addTarget(self, action: #selector(self.record), for: .touchDown)
recordButton.addTarget(self, action: #selector(self.stop), for: UIControl.Event.touchUpInside)
Finally add these functions to your ViewController
@objc func record() {
self.progressTimer = Timer.scheduledTimer(timeInterval: 0.05, target: self, selector: #selector(ViewController.updateProgress), userInfo: nil, repeats: true)
}
@objc func updateProgress() {
let maxDuration = CGFloat(5) // Max duration of the recordButton
progress = progress + (CGFloat(0.05) / maxDuration)
recordButton.setProgress(progress)
if progress >= 1 {
progressTimer.invalidate()
}
}
@objc func stop() {
self.progressTimer.invalidate()
}
If you have any questions, please don't hesitate to create an issue.
- Add Carthage Support
- Add a delegation pattern
samuelbeek - iOS Developer, Consultant and Occasional Designer
This button is heavely inspired by SDRecordButton, which is made by Sebyddd
RecordButton is available under the MIT license. See the LICENSE file for more info.