bar

Baraba

Make your UIScrollView scroll automatically when user is looking ๐Ÿ‘€ by tracking face using ARKit and AVFoundation

Showing:

Popularity

Downloads/wk

0

GitHub Stars

287

Maintenance

Last Commit

1yr ago

Contributors

1

Package

Dependencies

0

License

MIT

Categories

Readme

Baraba

from Korean:

*meaning, Look at me*

Swift 5.0 Version Platform Carthage Compatible

Make your UIScrollView scroll automatically when user is looking at the screen ๐Ÿ‘€

Features

  • Automatic scrolling for your UIScrollView when user is looking at the screen๐Ÿ“ฑ๐Ÿ‘€
  • Pauses scrolling when user turns away๐Ÿ“ฑ๐Ÿ™„ or when starts scrolling ๐Ÿ‘†
  • Face Tracking using ARKit or AVFoundation (Your choice!)
  • Adjust scrolling speed appropriate for your content
  • Complete Documentation
  • Supports iOS 11 or above

Demo

Click below image ๐Ÿ‘‰ YouTube

Baraba Demo

Installation

CocoaPods

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

pod 'Baraba'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Baraba into your Xcode project using Carthage, specify it in your Cartfile:

github "nsoojin/baraba"

Run carthage update to build the framework and drag the built Baraba.framework into your Xcode project.

Example

The example application is the best way to see Baraba in action. Simply open the Baraba.xcodeproj and run the Example scheme.

Basic Usage

Just three simple lines of code to get it running!

// Probably in your view controller.
let baraba = Baraba(configuration: .automatic) // (1) Initialize Baraba

override func viewDidLoad() {
    super.viewDidLoad()
    
    baraba.scrollView = tableView // (2) Set the scroll view for the auto-scroll target
    baraba.delegate = self
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    baraba.resume() // (3) Resume to activate camera and start tracking user's face
}

override func viewWillDisppear(_ animated: Bool) {
    super.viewWillDisppear(animated)
    
    baraba.pause() // Pause to stop accessing camera
}

Configuration

let baraba = Baraba(configuration: .automatic) // Uses ARKit if supported. If not, uses AVFoundation
let baraba = Baraba(configuration: .ar)
let baraba = Baraba(configuration: .av)

Baraba.isConfigurationSupported(.ar) // Check the device availability

What's the difference?

ARKit uses TrueDepth front camera. Not all iOS devices supports this, so refer to device compatibility. Generally, ARKit has faster face tracking capability so reacts faster to user movement. However, it consumes more energy and may increase the device temperature when used for a long time. The best way to see the difference is to run it for youself. Try the Example app.

Scroll Speed

You can adjust scroll speed with preferredScrollSpeed property, which represents speed in 'points per second'. However, the actual scroll speed will be the nearest multiple of 60. The reason is for smooth scrolling, as the device's maximum refresh rate of the display is 60 frames per second. You can check the actual speed with actualScrollSpeed property if you want. Default is 180.

baraba.preferredScrollSpeed = 240 // baraba.actualScrollSpeed == 240 
baraba.preferredScrollSpeed = 100 // baraba.actualScrollSpeed == 120

Pause Duration

When user starts dragging the scroll view, auto-scrolling pauses. After the dragging finishes, auto-scrolling resumes after this duration.

baraba.pauseDuration = 4

โš ๏ธ Important

If you want to use BarabaConfiguration.ar which uses ARFaceTrackingConfiguration, your app must include a privacy policy describing to users how you intend to use face tracking and face data. (See Apple's Note)

Example #1 (This has passed the actual App Store Review.)

You can use this sample at your own discretion.

Don't forget to add Privacy - Camera Usage Description in your app's info.plist file.

FAQ

What's the origin of the name Baraba?

Baraba(๋ฐ”๋ผ๋ด) is a Korean term which means "Look at me".

Contributing

Contributions are very welcome ๐Ÿ™Œ

License

Baraba is released under the MIT license. See LICENCE for details.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100