:mag_right: A simple and beautiful barcode scanner.

Overview

BarcodeScanner

CI Status Version Swift Carthage Compatible License Platform

Description

BarcodeScanner is a simple and beautiful wrapper around the camera with barcode capturing functionality and a great user experience.

  • Barcode scanning.
  • State modes: scanning, processing, unauthorized, not found.
  • Handling of camera authorization status.
  • Animated focus view and custom loading indicator.
  • Torch mode switch.
  • Customizable colors, informational and error messages.
  • No external dependencies.
  • Demo project.

Table of Contents

BarcodeScanner Icon

Usage

Controller

To start capturing just instantiate BarcodeScannerViewController, set needed delegates and present it:

let viewController = BarcodeScannerViewController()
viewController.codeDelegate = self
viewController.errorDelegate = self
viewController.dismissalDelegate = self

present(viewController, animated: true, completion: nil)
BarcodeScanner scanning

You can also push BarcodeScannerViewController to your navigation stack:

let viewController = BarcodeScannerViewController()
viewController.codeDelegate = self

navigationController?.pushViewController(viewController, animated: true)

Delegates

Code delegate

Use BarcodeScannerCodeDelegate when you want to get the captured code back.

extension ViewController: BarcodeScannerCodeDelegate {
  func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
    print(code)
    controller.reset()
  }
}

Error delegate

Use BarcodeScannerErrorDelegate when you want to handle session errors.

extension ViewController: BarcodeScannerErrorDelegate {
  func scanner(_ controller: BarcodeScannerViewController, didReceiveError error: Error) {
    print(error)
  }
}

Dismissal delegate

Use BarcodeScannerDismissalDelegate to handle "Close button" tap. Please note that BarcodeScannerViewController doesn't dismiss itself if it was presented initially.

extension ViewController: BarcodeScannerDismissalDelegate {
  func scannerDidDismiss(_ controller: BarcodeScannerViewController) {
    controller.dismiss(animated: true, completion: nil)
  }
}

Actions

When the code is captured BarcodeScannerViewController switches to the processing mode:

BarcodeScanner loading

While the user sees a nice loading animation you can perform some background task, for example make a network request to fetch product info based on the code. When the task is done you have 3 options to proceed:

  1. Dismiss BarcodeScannerViewController and show your results.
func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
 // Code processing
 controller.dismiss(animated: true, completion: nil)
}
  1. Show an error message and switch back to the scanning mode (for example, when there is no product found with a given barcode in your database):
BarcodeScanner error

func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
 // Code processing
 controller.resetWithError(message: "Error message")
 // If message is not provided the default message will be used instead.
}
  1. Reset the controller to the scanning mode (with or without animation):
func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
  // Code processing
  controller.reset(animated: true)
}

If you want to do continuous barcode scanning just set the isOneTimeSearch property on your BarcodeScannerViewController instance to false.

Customization

We styled BarcodeScanner to make it look nice, but you can always use public properties or inheritance to customize its appearance.

Header

let viewController = BarcodeScannerViewController()
viewController.headerViewController.titleLabel.text = "Scan barcode"
viewController.headerViewController.closeButton.tintColor = .red

Please note that HeaderViewController is visible only when BarcodeScannerViewController is being presented.

Footer and messages

let viewController = BarcodeScannerViewController()
viewController.messageViewController.regularTintColor = .black
viewController.messageViewController.errorTintColor = .red
viewController.messageViewController.textLabel.textColor = .black

Camera

let viewController = BarcodeScannerViewController()
// Change focus view style
viewController.cameraViewController.barCodeFocusViewType = .animated
// Show camera position button
viewController.cameraViewController.showsCameraButton = true
// Set the initial camera position
viewController.cameraViewController.initialCameraPosition = .front // Default is .back
// Set settings button text
let title = NSAttributedString(
  string: "Settings",
  attributes: [.font: UIFont.boldSystemFont(ofSize: 17), .foregroundColor : UIColor.white]
)
viewController.cameraViewController.settingButton.setAttributedTitle(title, for: UIControlState())

Metadata

// Add extra metadata object type
let viewController = BarcodeScannerViewController()
viewController.metadata.append(AVMetadataObject.ObjectType.qr)

Installation

BarcodeScanner is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'BarcodeScanner'

Don't forget to set a Privacy - Camera Usage Description in your Info.plist file, else the app will crash with a SIGBART.

In order to quickly try the demo project of a BarcodeScanner just run pod try BarcodeScanner in your terminal.

BarcodeScanner is also available through Carthage. To install just write into your Cartfile:

github "hyperoslo/BarcodeScanner"

To install BarcodeScanner manually just download and drop Sources and Images folders in your project.

Author

Hyper Interaktiv AS, [email protected]

Contributing

We would love you to contribute to BarcodeScanner, check the CONTRIBUTING file for more info.

License

BarcodeScanner is available under the MIT license. See the LICENSE file for more info.

Comments
  • 100% cpu usage after scanning bar code

    100% cpu usage after scanning bar code

    Hey i was using your library (btw is awesome), and i found an issue with the cpu usage just after i scan a barcode. Running the time profile i was able to found that the issue is in the barcode.

    screen shot 2018-03-13 at 16 05 43 screen shot 2018-03-13 at 16 04 23
    opened by klinkert0728 15
  • Delegate to handle scanned barcode is called more than once!?

    Delegate to handle scanned barcode is called more than once!?

    When using the following code fragment: func barcodeScanner(_ controller: BarcodeScannerController, didCaptureCode code: String, type: String) { print("\(type(of: self)).barcodeScanner(,code=\(code),type=\(type)") let delayInSeconds = 0.5 var segueId = "" DispatchQueue.main.asyncAfter(deadline: .now() + delayInSeconds) { //My scanned code handling goes here ... } }

    I am getting the following output: HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode HomeScreenViewController.barcodeScanner(,code=Endoscope,type=org.iso.QRCode

    where I only expect one call! I configure the scanner according to the delegate's example.

    How can I prevent this from happening, since I want to call a performSegue(..) call, depending on the scanned-code. What I see now is that 6 times a specific performSegue() will be called, giving me 6 times the same ViewController on my NavigationController-stack?

    Anybody now a means how to prevent the barcodeScanner-delegate callback from being called more than one time?

    opened by githotto 14
  • Swift 4

    Swift 4

    I've updated the BarcodeScanner Framework and the Example project to Swift 4 with Base SDK 11 and changed the deployment target to iOS 10.3 (since anything less than 10.3 has less than a 9% market share). I've also added support for all orientations and fixed a bug where the Header would disappear if the rotation was changed. I also added all the new barcode types to the metadata array. I also added support for iPhone and iPad device.

    I also took the liberty of making some code better.

    I've tested all the barcode types and general stability of the framework and example project.

    Would you like me to submit a Pull Request to add all these features to your Scanner?

    opened by ghost 10
  • Using 99% of processor when opening Camera after Scan

    Using 99% of processor when opening Camera after Scan

    If you push a new ViewController which uses AVFoundation to take pictures or videos, this library makes an enormous use of processor on background (99% on iPhone 7 Plus). Please provide a way to stop capturing or processing after a new ViewController is pushed.

    opened by NdriqimHaxhaj 8
  • Swift 4

    Swift 4

    Swift 4 Upgrades! Let me know if I missed anything.

    • Upgrades to project and code to allow for Swift 4, SDK iOS11.
    • Target iOS 9.3.
    • Add support for UPC-A.
    • Add all new barcode types to the metadata array.
    opened by ghost 7
  • Navigation bar not displayed when scanner presented modally

    Navigation bar not displayed when scanner presented modally

    I have been successfully using the scanner by pushing it on to the navigation stack. Now however I would like to present it. Strangely the built-in navigation bar is hidden. It seems like the isBeingPresented check is not returning the correct result. The navigation bar does show but once the modal animation has completed and the bar has reached the top of the screen it disappears. I have pasted my code below.

            // Configure barcode scanner
            let controller = BarcodeScannerController()
            controller.codeDelegate = self
            controller.dismissalDelegate = self
            controller.errorDelegate = self
            controller.hidesBottomBarWhenPushed = true
                    
            // Set strings
            BarcodeScanner.Info.loadingText = NSLocalizedString("Retrieving code...", comment: "")
                
            // Display scanner
            navigationController?.present(controller, animated: true, completion: nil)
    
    

    Is there a way I can manually set the navigation bar visibility?

    opened by kjakm 7
  • controller.reset() not working as expected

    controller.reset() not working as expected

    After scanning a barcode the "Looking for your product..." animation will not dismiss. Based on the below code the assumed behavior would be that the scanner would reset so that I can scan another code. Am I missing something?

    func barcodeScanner(_ controller: BarcodeScannerController, didCaptureCode code: String, type: String) {
        print("Capture Successful")
        print("code: \(code): type: \(type)")
        
        capturedCodes.insert(code)
        
        controller.reset(animated: true)
      }
    

    Also, using controller.resetWithError(message: String?) does not seem to work correctly either. The error appears briefly but then changes to the "Looking for your product..." animation and remains as describe above.

    opened by rmoffett 7
  • Command failed due to signal: Abort trap: 6

    Command failed due to signal: Abort trap: 6

    when archive I get the following error XCODE 9.4.1

    :0: error: fatal error encountered while reading from module 'BarcodeScanner'; please file a bug report with your project and the crash log :0: note: compiling as Swift 3.3.2, with 'BarcodeScanner' built as Swift 4.1.2 (this is supported but may expose additional compiler issues)

    *** DESERIALIZATION FAILURE (please include this section in any bug report) *** declaration is not a nominal type Cross-reference to module 'AVFoundation' ... ObjectType

    0 swift 0x0000000106454fea PrintStackTraceSignalHandler(void*) + 42 1 swift 0x00000001064543a6 SignalHandler(int) + 966 2 libsystem_platform.dylib 0x00007fff7bafff5a _sigtramp + 26 3 libsystem_platform.dylib 0x0000000109c9d2c4 _sigtramp + 2384057220 4 libsystem_c.dylib 0x00007fff7b89d1ae abort + 127 5 swift 0x0000000103b83d5e swift::ModuleFile::fatal(llvm::Error) + 2062 6 swift 0x0000000103b9614a swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 13418 7 swift 0x0000000103ba4fc7 swift::SILDeserializer::readSILFunction(llvm::PointerEmbeddedInt<unsigned int, 31>, swift::SILFunction*, llvm::StringRef, bool, bool) + 455 8 swift 0x0000000103bb81bc swift::SILDeserializer::getFuncForReference(llvm::StringRef) + 748 9 swift 0x0000000103bb967d swift::SILDeserializer::readVTable(llvm::PointerEmbeddedInt<unsigned int, 31>) + 605 10 swift 0x00000001038ad8eb swift::SILLinkerVisitor::processClassDecl(swift::ClassDecl const*) + 91 11 swift 0x00000001038f4545 swift::SILModule::lookUpVTable(swift::ClassDecl const*) + 261 12 swift 0x00000001038ad50f swift::SILLinkerVisitor::linkInVTable(swift::ClassDecl*) + 31 13 swift 0x00000001038acfc5 swift::SILLinkerVisitor::process() + 517 14 swift 0x00000001038accef swift::SILLinkerVisitor::processFunction(swift::SILFunction*) + 79 15 swift 0x00000001034d54e6 (anonymous namespace)::SILLinker::run() + 182 16 swift 0x00000001035b1cc9 swift::SILPassManager::runOneIteration() + 10217 17 swift 0x0000000102ab5125 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 37781 18 swift 0x0000000102aaa304 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7908 19 swift 0x0000000102a5ece5 main + 18917 20 libdyld.dylib 0x00007fff7b7f1015 start + 1 21 libdyld.dylib 0x00000000000000a0 start + 2223042700

    opened by fabrizotus 6
  • Fix for Swift 4.2

    Fix for Swift 4.2

    Only issue I have found is. Camera either freezes or is black when first starting the app. Go to home and open again and it works fine. Tested on iPhone X

    opened by shaqaruden 6
  • Do Not add Subviews directly to the Visual Effect View, instead add them to the ContentView - Swift 4 ISSUE XCODE 9

    Do Not add Subviews directly to the Visual Effect View, instead add them to the ContentView - Swift 4 ISSUE XCODE 9

    I integrated the BarcodeScanner POD in the project and it runs perfectly on iOS 10. However on iOS 11 its giving me the below error. Please update your pod to work with Swift 4.

    2017-10-15 17:11:16.427039+0530[1797:1731968] [MC] Lazy loading NSBundle MobileCoreServices.framework 2017-10-15 17:11:16.428545+0530[1797:1731968] [MC] Loaded MobileCoreServices.framework 2017-10-15 17:11:17.538814+0530[1797:1731968] *** Assertion failure in -[BarcodeScanner.InfoView _addSubview:positioned:relativeTo:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3694.4.18/UIVisualEffectView.m:1464 2017-10-15 17:11:17.543583+0530[1797:1731968] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<UILabel: 0x127dc0580; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1c0481540>> has been added as a subview to <BarcodeScanner.InfoView: 0x127d250a0; baseClass = UIVisualEffectView; frame = (0 0; 0 0); layer = <CALayer: 0x1c043c8e0>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView.' *** First throw call stack: (0x182c9fd38 0x1821b4528 0x182c9fc0c 0x18362ec24 0x18c73c7a8 0x10595cda4 0x10594dadc 0x10595ced4 0x106263a50 0x106076b94 0x10595cb20 0x10595cf00 0x10595c650 0x1059487f4 0x10594d194 0x10594dd7c 0x18c0afbfc 0x18c0af7d4 0x18cc3c8b0 0x18c3f23b0 0x18c422034 0x18c424f54 0x18c425488 0x18c424ea4 0x18c18f55c 0x104b40ea8 0x104b41074 0x18c0e420c 0x18c0e418c 0x18c0cef4c 0x18c0e3a80 0x18c0e35a0 0x18c0dea70 0x18c0b0078 0x18c9eff98 0x18c9f2408 0x18c9eb574 0x182c48358 0x182c482d8 0x182c47b60 0x182c45738 0x182b662d8 0x1849f7f84 0x18c113880 0x104994b8c 0x18268a56c) libc++abi.dylib: terminating with uncaught exception of type NSException

    opened by blitsglobal 6
  • Barcode focus view styling choosing

    Barcode focus view styling choosing

    Here in AMARO, the bar code will be used only for 1D codes, so there's no need for me to have the animation that says it works both 1D and 2D codes. Made an adaptation for a new BarcodeScannerController attribute called barCodeFocusViewType which makes possible to choose between one dimension code, two dimension codes or the animated option that is already implemented. Please let me know if something is wrong or should be changed. I hope I could help.

    opened by carlbrusell 6
  • Modernizing BarcodeScanner

    Modernizing BarcodeScanner

    There are a number of issues (mostly minor) with using BarcodeScanner with recent versions of Xcode, Swift, and iOS: (1) Threading Issues: Every time I attempt to read a barcode, I get the following (backtrace omitted): Thread Performance Checker: -[AVCaptureSession startRunning] should be called from background thread. Calling it on the main thread can lead to UI unresponsiveness (2) There are a number of deprecations in the code, all easily solved: (a) protocol definitions (protocol xxx: class {} instead of protocol xxx: AnyObject {}) (b) use of UIApplication.shared.statusBarOrientation etc.

    opened by rlaurb 0
  • Signing for

    Signing for "BarcodeScanner-Localization" requires a development team.

    While Running the app on a real device getting issues for "BarcodeScanner-Localization" and "BarcodeScanner-BarcodeScanner" for sign-in required. For more clarity, I have attached an image for that. Screenshot 2022-09-21 at 8 13 59 PM

    Screenshot 2022-09-21 at 8 16 59 PM

    Please let me know how to resolve this issue.

    opened by nitishs-btc 11
  • iPad issue: Video capture viewport not working in split mode

    iPad issue: Video capture viewport not working in split mode

    Hi, first off, thank you for a wonderful barcode scanning solution, which i will shortly integrate into my iOS app RetroChecker. I have one remaining problem with using it: The solution works fine on iPhone and iPad, but when i use Split Window on iPad (e.g. one half of screen for my App only), and then initialize the BarcodeScannerViewController, the viewport stays black. As soon as i expand the window to full screen, it works fine.

    As i find time, i may also elaborate myself what is going on there, but any help how to make this work would be highly appreciated.

    opened by schleussinger 1
  • Remove - while setting collapsed constraints for MessageViewController

    Remove - while setting collapsed constraints for MessageViewController

    Sorry for not openning PR, I made a lot of changes, so dont want to push it here :)

    private func makeCollapsedConstraints() -> [NSLayoutConstraint] {
        return [
          messageView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
          messageView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
          messageView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
          messageView.heightAnchor.constraint(
            equalToConstant: hideFooterView ? 0 : -BarcodeScannerViewController.footerHeight
          )
        ]
      }
    

    Here I think -BarcodeScannerViewController.footerHeight should be BarcodeScannerViewController.footerHeight height can not be negative.

    opened by Narek1994 0
  • Error not sure issue

    Error not sure issue

    2022-06-07 12:11:51.415810+1000 CleverSparky[467:23701] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "MessageView" nib but the view outlet was not set.' *** First throw call stack: (0x196475288 0x1af16f744 0x1964cc390 0x198a1fbdc 0x198a04634 0x1989d79e4 0x10216c39c 0x10216c764 0x198a01e34 0x198a04984 0x1989d79e4 0x198ba8470 0x198c63a44 0x198d26110 0x198c8e51c 0x1989c87e0 0x198b1338c 0x198ab0b60 0x198c24a84 0x198b381b8 0x100fe3390 0x100fe33f8 0x198d1a9bc 0x198e45374 0x198bc2368 0x198c5f078 0x198ef052c 0x1028caa8c 0x1989c75ec 0x1989f8870 0x198ba6288 0x101068f1c 0x10106941c 0x1989cc150 0x1989c0ea8 0x1989c6428 0x196497414 0x1964a81a0 0x1963e1694 0x1963e705c 0x1963fabc8 0x1b252e374 0x198d6a648 0x198aebd90 0x1010c62d8 0x101e0dce4) libc++abi: terminating with uncaught exception of type NSException dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "MessageView" nib but the view outlet was not set.' terminating with uncaught exception of type NSException

    opened by mitchclevertronics 2
Releases(5.0.1)
  • 5.0.0(Oct 4, 2020)

  • 4.1.3(Mar 4, 2018)

  • 4.1.2(Feb 5, 2018)

  • 4.1.1(Feb 1, 2018)

  • 4.1.0(Jan 31, 2018)

  • 4.0.1(Jan 30, 2018)

  • 4.0.0(Jan 29, 2018)

    ⚠️ Breaking changes

    • BarcodeScannerController has been renamed to BarcodeScannerViewController
    • Remove configuration struct in favour of public properties. See README for more information
    • Custom views have been replaced with child view controllers
    • Now it's possible to switch between back/front cameras if needed https://github.com/hyperoslo/BarcodeScanner/pull/91
    • Message expand/collapse animation has been fixed https://github.com/hyperoslo/BarcodeScanner/pull/90
    Source code(tar.gz)
    Source code(zip)
  • 3.0.3(Jan 11, 2018)

    🚀 Merged pull requests

    • Fix title and button on navigation bar in iOS 10 https://github.com/hyperoslo/BarcodeScanner/pull/84, by onmyway133

    🤘 Closed issues

    • Close button and title not shown in navigationBar on iOS 10 and below https://github.com/hyperoslo/BarcodeScanner/issues/83
    Source code(tar.gz)
    Source code(zip)
  • 3.0.2(Jan 10, 2018)

    🚀 Merged pull requests

    • Refactor: access control https://github.com/hyperoslo/BarcodeScanner/pull/78, by vadymmarkov
    • Use UINavigationBar https://github.com/hyperoslo/BarcodeScanner/pull/82, by onmyway133

    🤘 Closed issues

    • iPhoneX layout issue (Close button) https://github.com/hyperoslo/BarcodeScanner/issues/76
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Dec 7, 2017)

    • Fixing iPhone X issues, Simulator crash https://github.com/hyperoslo/BarcodeScanner/pull/77 by @prcodes
    • Add Polish localisation https://github.com/hyperoslo/BarcodeScanner/pull/74 by @stolkachov
    • Avoid possible retain cycles in animation completion handler https://github.com/hyperoslo/BarcodeScanner/pull/69 by @jkates1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Sep 26, 2017)

  • 2.1.2(Aug 4, 2017)

  • 2.1.1(Jul 15, 2017)

  • 2.1.0(Jul 13, 2017)

    • Fix retain cycle/infinite animation in InfoView by @algrid https://github.com/hyperoslo/BarcodeScanner/pull/20
    • Add localized strings (en & de) by @tapwork https://github.com/hyperoslo/BarcodeScanner/pull/30
    • Allow all orientation & fix layout by @tapwork https://github.com/hyperoslo/BarcodeScanner/pull/31
    • Set config variable for the header background by @ecompton3 https://github.com/hyperoslo/BarcodeScanner/pull/33
    • Add ITF Support by @georgepoenaru https://github.com/hyperoslo/BarcodeScanner/pull/38
    • Fix flattened preview by @jeryRazakarison https://github.com/hyperoslo/BarcodeScanner/pull/41
    • Add localized strings (fr) by @frederic-adda https://github.com/hyperoslo/BarcodeScanner/pull/47
    • Fix Fix leading zero added to UPC-A codes by @tapwork https://github.com/hyperoslo/BarcodeScanner/pull/49
    • Barcode focus view styling choosing by @icefall https://github.com/hyperoslo/BarcodeScanner/pull/50
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Oct 13, 2016)

  • 1.1.0(Oct 6, 2016)

  • 1.0.0(Jul 1, 2016)

    BarcodeScanner is a simple and beautiful wrapper around the camera with barcode capturing functionality and a great user experience.

    • [x] Barcode scanning.
    • [x] State modes: scanning, processing, unauthorized, not found.
    • [x] Handling of camera authorization status.
    • [x] Animated focus view and custom loading indicator.
    • [x] Torch mode switch.
    • [x] Customizable colors, informational and error messages.
    • [x] No external dependencies.
    • [x] Demo project.
    Source code(tar.gz)
    Source code(zip)
Owner
HyperRedink
Connected creativity
HyperRedink
A simple Swift framework for building reliable Bluetooth LE apps.

Bluejay is a simple Swift framework for building reliable Bluetooth LE apps. Bluejay's primary goals are: Simplify talking to a single Bluetooth LE pe

Steamclock Software 1k Dec 13, 2022
Simple motion detector for ⌚️ (watchOS) shake gesture.

WatchShaker Simple motion detector for ⌚️ (watchOS) shake gesture. WatchShaker is a watchOS helper to get your ⌚️ shake movements Requirements watchOS

Ezequiel França 200 Dec 22, 2022
Just simple template - example how to use haptics in iOS Development

Haptics Just simple template - example how to use haptics in iOS Development imp

Alexander Ryakhin 1 Jan 31, 2022
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.

EFQRCode is a lightweight, pure-Swift library for generating stylized QRCode images with watermark or icon, and for recognizing QRCode from images, in

EFPrefix 4.3k Jan 2, 2023
🛰 CoreLocation Made Easy - Efficient & Easy Location Tracker, IP Location, Gecoder, Geofence, Autocomplete, Beacon Ranging, Broadcaster and Visits Monitoring

Location Manager Made Easy SwiftLocation is a lightweight Swift Library that provides an easy way to work with location-related functionalities. No mo

Daniele Margutti 3.2k Dec 30, 2022
Instagram-like photo browser and a camera feature with a few line of code in Swift.

NOTE: This project is no longer maintained. We highly recommend YPImagePicker. Fusuma Fusuma is a Swift library that provides an Instagram-like photo

Yuta Akizuki 2.4k Dec 31, 2022
A camera view controller with custom image picker and image cropping.

ALCameraViewController A camera view controller with custom image picker and image cropping. Features Front facing and rear facing camera Simple and c

Alex Littlejohn 2k Dec 29, 2022
Library for iOS Camera API. Massively increase performance and ease of use within your next iOS Project.

CameraKit helps you add reliable camera to your app quickly. Our open source camera platform provides consistent capture results, service that scales,

CameraKit 628 Dec 27, 2022
Get the data from Accelerometer, Gyroscope and Magnetometer in only Two or a few lines of code.

Get the data from Accelerometer, Gyroscope and Magnetometer in only Two or a few lines of code. CoreMotion now made insanely simple :octocat: :satellite:

Muhammad Haroon Baig 1.1k Nov 16, 2022
Simply the fastest way to transmit data between iOS/tvOS and OSX

DarkLightning DarkLightning is a lightweight Swift library to allow data transmission between iOS/tvOS devices (Lightning port, Dock connector, USB-C)

Jens Meder 318 Nov 29, 2022
Swift library to easily check the current device and some more info about it.

Usage To run the example project, clone the repo, and run pod install from the Example directory first. let device = Deviice.current device is a Devi

Andrea Mario Lufino 56 Nov 3, 2022
Luminous provides you a lot of information about the system and a lot of handy methods to quickly get useful data on the iOS platform.

Luminous Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements iOS 8+ Swift 5 Xcode 1

Andrea Mario Lufino 324 Nov 27, 2022
Light weight tool for detecting the current device and screen size written in swift.

Device detect the current  device model and screen size. Installation CocoaPods Device is available through CocoaPods. To install it, simply add the

Lucas Ortis 1.5k Dec 28, 2022
WatchCon is a tool which enables creating easy connectivity between iOS and WatchOS.

WatchCon WatchCon is a tool which enables creating easy connectivity between iOS and WatchOS Requirements iOS 9.0+ / watchOS 2.0+ CocoaPods CocoaPods

Abdullah Selek 33 Sep 22, 2022
NFC Forum Well Known Type Data Parser for iOS11 and Core NFC

NFCNDEFParse NFC Forum Well Known Type Data Parser for iOS11 and Core NFC. Supports parsing of types: Text - NFCForum-TS-RTD_Text_1.0 2006-07-24 Uri -

Jari Kalinainen 14 Oct 21, 2022
Lightweight Cocoa library for detecting the running device's model and screen size.

Lightweight Cocoa library for detecting the running device's model and screen size. With the newer  devices, developers have more work to do. This li

Sebastian Dobrincu 1.3k Nov 24, 2022
Writes twitter and contact (links) to writable nfcs on iPhone 7+ iOS 14+

nfc writer ios app nfc writer app is a hacky fun side project that writes twitter and contact (links) to writable nfcs. runs on iPhone 7+ iOS 14+. joi

Vivian Phung 5 Nov 23, 2022
:mag_right: A simple and beautiful barcode scanner.

Description BarcodeScanner is a simple and beautiful wrapper around the camera with barcode capturing functionality and a great user experience. Barco

HyperRedink 1.6k Jan 3, 2023
A simple and beautiful barcode scanner.

Description BarcodeScanner is a simple and beautiful wrapper around the camera with barcode capturing functionality and a great user experience. Barco

HyperRedink 1.6k Dec 28, 2022
CarBode : Free & Opensource barcode scanner & generator for SwiftUI

CarBode Free and Opensource Barcode scanner & Barcode generator for swiftUI Why you must use CarBode CarBode have both Barcode Scanner and Barcode Gen

Narongrit Kanhanoi 196 Dec 30, 2022