Skip to content

πŸŽ₯ CameraButtonKit β€” A customizable camera record button for iOS with long-press recording, animated progress spinner, and tap gesture support. Ideal for short video apps and camera UIs.

License

Notifications You must be signed in to change notification settings

jaydeep-godhani/CameraButtonKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CameraButtonKit

GitHub repo size GitHub stars GitHub forks Platform Language License

A customizable and lightweight camera-style record button for iOS, with support for tap, long-press recording, progress spinner animation, and delegate callbacks.

Demo

Features

  • πŸŽ₯ Long-press to start recording
  • 🟒 Tap to trigger single-shot action
  • πŸŒ€ Circular animated spinner around button
  • ⏱️ Auto-stop after max duration
  • ⚠️ Delegate warning if recording is too short
  • πŸ” Customizable sizes, colors, and timings

Requirements

  • iOS 13.0+
  • Swift 5
  • Xcode 12 or higher

Installation

This is an Xcode project, so you can directly clone or download the project into your workspace.

Clone the Repository

git clone https://github.com/jaydeep-godhani/CameraButtonKit.git

Alternatively, you can download the project as a ZIP file from the GitHub repository page.

Integrating into Your Project

To integrate the CameraButtonView into your own Xcode project:

  1. Download or clone the repository.
  2. Copy the contents of the Source folder into your project.
  3. Add CameraButtonView to your storyboard or use it programmatically in your view controllers.

Usage

import CameraButtonKit

class ViewController: UIViewController, CameraButtonDelegate {

 override func viewDidLoad() {
     super.viewDidLoad()
     
     let cameraButton = CameraButtonView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
     cameraButton.center = view.center
     cameraButton.delegate = self
     view.addSubview(cameraButton)
 }

 // MARK: - CameraButtonDelegate Methods

 func onStartRecord() {
     print("Started recording")
 }

 func onEndRecord() {
     print("Finished recording")
 }

 func onDurationTooShortError() {
     print("Recording too short!")
 }

 func onSingleTap() {
     print("Single tap action")
 }

 func onCancelled() {
     print("Recording cancelled")
 }

}

Customization

Property Description Default
lineWidth Thickness of the spinner 10
spinnerLineSpacing Gap between button and spinner 20
spinnerPadding Additional space outside the spinner 15
minRecordDuration Minimum valid duration in seconds 0.3
maxRecordDuration Maximum allowed duration 60.0

You can also change the spinner color by updating spinnerLayer.strokeColor.

Contributions

We welcome contributions! If you find a bug, have an idea for a new extension, or want to improve the documentation, feel free to fork the repo and create a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

πŸŽ₯ CameraButtonKit β€” A customizable camera record button for iOS with long-press recording, animated progress spinner, and tap gesture support. Ideal for short video apps and camera UIs.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages